获取$(this)的选中选项
问题的原因:用户想要获取选中选项的类名。
解决方法:
1. 首先判断是否为select元素。
2. 使用jQuery的find()方法找到选中的option元素。
3. 使用attr()方法获取选中option元素的class属性。
4. 使用console.log()打印获取到的类名。
代码如下:
if ($(this).is('select')){ console.log($(this).find("option:selected").attr("class")); }
链接:[http://jsfiddle.net/DWEY4/](http://jsfiddle.net/DWEY4/)
注意:无法确定为什么有人给这两个答案点了踩,但没有提供评论。
问题的原因是在代码中使用了错误的参数顺序。在代码中,$("option:selected", elem)
的第一个参数是选择器,第二个参数是上下文。而正确的写法应该是$("option:selected", this)
,其中第一个参数是上下文,第二个参数是选择器。
解决方法是将参数的顺序调整正确。将代码修改为console.log($("option:selected", this));
即可解决问题。另外,.each
的第二个参数是元素本身,可以直接使用elem
代替this
。
修正后的代码如下:
elems.each(function(idx, elem) { if ($(elem).is('select')){ console.log($("option:selected", this)); } });
点击下方链接查看演示:http://jsfiddle.net/MUC6H/1/
当在一个循环中使用$(this)时,每次调用$(this)都会调用一次函数$()并需要处理。因此,为了减少不必要的计算量和提高性能,可以将$(this)缓存为变量ref,然后在循环中使用ref来代替$(this)。
解决方法就是使用一个变量来缓存$(this),然后在循环中使用缓存的变量来代替$(this)。这样可以避免重复调用$()函数,提高代码的性能。
在给定的代码示例中,变量ref被用来缓存$(this),然后在if语句块中使用ref来代替$(this)。这样可以避免在if语句块中重复调用$(this)。
缓存$(this)的目的是为了提高代码的性能和效率。通过缓存$(this),可以避免重复调用$()函数,减少不必要的计算量。这对于在循环中处理大量元素时特别有用,可以显著提高代码的执行速度。
在给定的代码示例中,使用缓存的$(this)变量ref来查找选中的option元素,并输出其结果。这样可以避免在每次调用时都重新计算$(this)。
总之,缓存$(this)的目的是为了提高代码的性能和效率。通过将$(this)缓存为变量,可以避免重复调用$()函数,减少不必要的计算量,从而提高代码的执行速度。这是一种常用的优化技巧,在处理大量元素时特别有用。