Jquery - 何时使用“this”以及何时使用“$(this)”?

时间:2011-12-12 03:25:59

标签: jquery

  

可能重复:
  jQuery $(this) vs this

“this”和“$(this)”有什么区别?

我如何知道使用哪一个?

相关,我认为:

每个都有可选参数。 “i”与“this”(或“$(this)”)有什么不同?

$('img').each(function(i) { ....code }

VS

$('img').each(function() { ....code }

6 个答案:

答案 0 :(得分:13)

this对象不会更改。它是该功能的所有者。在大多数情况下,它只是一个节点,您可以引用它的所有属性,如this.className。 (把它想象成一个节点或者你用document.getElementById得到的东西)。它只是该功能的“拥有者”。

因此,您只是将this对象传递给jQuery的$()

结论:如果要对当前节点使用jQuery函数,请使用$(this)。但是,如果您想要访问对象自己的属性(例如.nameclassName.id),请使用this

答案 1 :(得分:5)

这是针对jQuery的javascript,$(this)。 你可以对jQuery的每个函数使用$(this),而不是这个。

编辑: 对于你的例子,我只是他所加的数字增加的数字(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函数更多的原因。

答案 2 :(得分:2)

jQuery中的

this通常指向DOM元素,例如HTMLSelectElement

使用jQuery函数对其进行重新打包,可以在其上调用jQuery方法。

答案 3 :(得分:1)

将其置于$()内部会将其转换为jquery对象,并能够调用所有典型的jQuery方法。这本身就只是对给定对象/元素的正常javascript引用。

答案 4 :(得分:0)

$( ".class" ).click( function () {

  $( this ).load( "/path/to/file.html" );

} );

在此示例中,this指的是.class div,并会在您点击它时将file.html的内容加载到所述div中。

点击.classfile.html加载到其中。

答案 5 :(得分:0)

您是否需要$(this)取决于您正在使用的上下文。

需要它:

  • 处理jQuery事件时 这是作为触发事件的DOM元素传递的$(this)将DOM元素转换为jQuery对象

  • 随时获得DOM元素 您有DOM元素(或对象)并希望将其转换为jQuery对象的其他实例

不需要它:

  • jQuery插件内部 jQuery插件(jquery.fn)函数这是一个jQuery对象,所以不需要在这里应用$(this)。

$(this)没有损害,即使这是一个jQuery对象,因为jQuery只会返回相同的对象。