jQuery“this”和JavaScript“this”有什么区别?

时间:2013-05-30 13:05:19

标签: jquery

我正在阅读一本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

有什么区别?我如何知道使用哪一个以及何时使用?

6 个答案:

答案 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)

当你进入自己的jQuery函数时,

'this'是一个jQuery对象。请注意,选择器查询(i.e. $(this))的结果是一个jQuery对象,它是匹配的array元素的DOM

Reference