5

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

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

4

6 回答 6

7

this如果您想直接访问正在处理的 DOM 节点,请使用此选项。它是任何 jQuery 注册的事件处理程序(即接收事件的元素)和许多其他 jQuery 函数(例如.each.

$(this)如果要在该元素上调用 jQuery 方法,请使用。

如果var $this = $(this)您希望在元素上调用大量 jQuery 方法,请使用,在我自己的编码风格中,“很多”是“不止一个”。

在许多情况下,最好使用普通模式this——我考虑使用写作$(this).attr('id')而不是this.id反模式。

于 2013-05-30T13:06:29.490 回答
5

this是 DOM 元素

$(this)是jquery对象

因此,$(this)您可以使用 jquery 的所有方法,例如attr()val().. 而我们不能使用this.. 您必须使用this.valuethis.id

于 2013-05-30T13:06:59.190 回答
3

$(this)包装this在一个 jquery 选择器中。

this当引用一个 DOM 元素并且您希望在该元素上使用 jQuery 计算模型时,通常会这样做。例如在回调中。如果您要查找的属性是 DOM 模型的一部分,并且在浏览器中保持一致,例如该id属性,则无需将其包装在 jQuery 选择器中,您只需this.id在 jQuery 版本所在的位置进行操作即可$(this).attr('id')

两种情况下的旁注 this都指向同一个对象,但在该对象的情况下,$(this)该对象作为参数传递给名为的函数$

于 2013-05-30T13:07:03.947 回答
1

在第一种情况下,我们将它表示为一个 DOM 元素,在第二种情况下,它是该元素的对象,并且

$(this)[0] = this;
于 2013-05-30T13:07:21.053 回答
1

this指 DOM 元素本身;$(this)将元素包装在一个 jQuery 对象中。

于 2013-05-30T13:07:43.993 回答
1

this当您在自己的 jQuery 函数中时,' ' 是一个 jQuery 对象。请注意,选择器查询 ( i.e. $(this)) 的结果是一个 jQuery 对象,它是array匹配DOM元素中的一个

参考

于 2013-05-30T13:10:36.933 回答