编辑
答案指出,关键字this
在 jQuery 中的使用与在任何 JavaScript 代码中一样。也就是说,对象方法将对象本身接收为this
,这就是函数所发生的情况$.fn
(它们在 jQuery 对象上调用)。事件处理函数是回调函数,它们不是对象方法,它是调用者决定this
在函数内部引用什么。它通常引用一个 DOM 元素。
原始问题
this
和之间的区别$(this)
通常被解释为this
引用一个DOM 对象,而$(this)
引用一个jQuery 对象(一个带有 jQuery 包装器的 DOM 元素)。
在下面的示例中,处理函数this
作为 DOM 元素传递,通过包装它,$()
我们从中创建一个 jQuery 对象,因此我们可以在其上使用位于$.fn
命名空间中的函数。
$('div').on('click', function(event){
event.preventDefault();
$(this).css('backgroundColor', 'red');
});
但是,我刚刚在 learn.jquery.com 上看到了这个解释:
$.fn.greenify = function() {
this.css( "color", "green" );
};
$("a").greenify(); // makes all the links green
// Explanation provided by the author of the article:
// "Notice that to use css(), another method, we use this, not $( this ).
// This is because our greenify function is a part of the same object as css()."
这是否意味着this
在传递给事件处理函数时引用了一个 DOM 对象,但在传递给 jQuery 对象方法时引用了一个 jQuery 对象?
事实上,这是有道理的,因为该方法是在 jQuery 对象上调用的,因此将 jQuery 对象传递给它是合乎逻辑的。