Jquery – 何时使用“this”以及何时使用“$(this)”?
可能重复:
jQuery $(this)vs this
“this”和“$(this)”有什么区别?
我怎么知道使用哪一个?
相关,我认为:
每个都有可选参数。 “i”与“this”(或“$(this)”)有什么不同?
$('img').each(function(i) { ....code }
与
$('img').each(function() { ....code }
this
对象不会改变。 它是该function的所有者。 在大多数情况下,它只是一个节点,您可以引用它的所有属性,如this.className
。 (把它想象成一个节点或者你用document.getElementById
得到的东西)。 它只是该function的“拥有者”。
因此,您只是this
对象传递给jQuery的$()
。
结论:如果要对当前节点使用jQuery函数,请使用$(this)
。 但是如果要访问对象自己的属性(例如.name
, className
, .id
),请使用this
。
这是针对javascript的javascript,$(this)。 你可以使用$(this)来表示jQuery的每个函数,而不是这个。
编辑:对于你的例子,我只是他所加的数字增加的数字(0,第1 10和11),$(this)是元素img,你可以做到:
$(this).on('click', function() { console.log(123); }); or $('img').eq(i).on('click', function() { console.log(123); });
Edit2:这是一个用法:
var sorter = { sort: function() { console.log('sorting'); }, requestSorting: function() { this.sort(); } } sorter.requestSorting.bind(sorter);
在这个例子中,它与PHP类中的$ this完全一样。 这就是为什么我说纯粹的javascript函数更多的原因。
this
在jQuery中通常指向DOM元素,例如HTMLSelectElement
。
使用jQuery函数重新打包它允许您在其上调用jQuery方法。
把它放在$()里面会把它变成一个jquery对象,能够在它上面调用所有典型的jQuery方法。 这本身就只是对给定对象/元素的正常javascript引用。
$( ".class" ).click( function () { $( this ).load( "/path/to/file.html" ); } );
在这个例子中, this
是指.class
div,并且当你点击它时file.html
的内容file.html
到所说的div中。
所以点击.class
,将file.html
加载到其中。
您是否需要$(this)取决于您正在使用的上下文。
需要它:
-
处理jQuery Events时,它会作为触发事件的DOM元素传递$(this)将DOM元素转换为jQuery对象
-
任何时候你得到一个DOM元素你有一个DOM元素(或一个对象)并希望将其转换为jQuery对象的其他实例
不需要它:
- 在jQuery Plug-in jQuery插件(jquery.fn)函数内部,这是一个jQuery对象,所以不需要在这里应用$(this)。
即使这是一个jQuery对象也没有在$(this)中造成伤害,因为jQuery只会返回相同的对象。