我正在阅读一本jQuery书,有时我会看到如下例子:
$('img[alt]').each(function(){
$(this).replaceWith('<span>' + $(this).attr('alt')+ '</span>')
}
有时我会看到如下例子:
$('*').attr('title', function(index, value) {
return value + 'I am element ' + index + ' and my name is ' + this.id);
});
所以有时会看到$(this)
,有时它只是this
有什么区别?我如何知道使用哪一个以及何时使用?
答案 0 :(得分:6)
如果要直接访问正在处理的DOM节点,请使用this
。它是任何jQuery注册的事件处理程序(即接收事件的元素)和许多其他jQuery函数(如.each
)的默认上下文。
如果要在该元素上调用jQuery方法,请使用$(this)
。
如果你希望在元素上调用大量的jQuery方法,请使用var $this = $(this)
,其中我自己的编码风格“lot”是“不止一个”。
在许多情况下,最好使用普通this
- 我考虑将$(this).attr('id')
而不是this.id
写成反模式。
答案 1 :(得分:4)
this
是DOM元素
$(this)
是jquery对象
所以使用$(this)
,您可以使用jquery的所有方法,例如attr()
,val()
..我们不能使用this
...你必须使用{{ 1}}或this.value
答案 2 :(得分:3)
$(this)
将this
包装在jquery选择器中。
当this
引用DOM元素并且您希望在该元素上使用jQuery计算模型时,通常会执行此操作。例如。在回调中。如果您要查找的属性是DOM模型的一部分,并且在id
属性等浏览器中保持一致,则无需将其包装在jQuery选择器中,只需执行this.id
jQuery版本将是$(this).attr('id')
旁注
两个案例中的this
指向同一个对象,但在$(this)
的情况下,该对象作为参数传递给名为$
的函数
答案 3 :(得分:1)
在第一种情况下,我们为DOM元素表示它,在第二种情况下,它是该元素的对象 和
$(this)[0] = this;
答案 4 :(得分:1)
this
指的是DOM元素本身; $(this)
将元素包装在jQuery对象中。
答案 5 :(得分:1)
'this
'是一个jQuery对象。请注意,选择器查询(i.e. $(this)
)的结果是一个jQuery对象,它是匹配的array
元素的DOM