4 javascript jquery jquery-plugins
编辑
答案指出,关键字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');
});
Run Code Online (Sandbox Code Playgroud)
但是,我刚刚在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()."
Run Code Online (Sandbox Code Playgroud)
这是否意味着this在传递给事件处理函数时引用DOM对象,但在传递给jQuery对象方法时引用jQuery对象?
事实上,它是有道理的,因为该方法是在jQuery对象上调用的,因此将jQuery对象传递给它是合乎逻辑的.
"this"标识符与jQuery无关,它是javascript不可或缺的一部分.
您可以查看此链接,其中提供了"this"关键字的详细说明:http://www.devign.me/javascript-this-keyword/
在jQuery插件方法this中已经是jQuery对象.因此,您可以直接使用jQuery方法this.
这与事件处理程序无关.这是因为当在对象(在这种情况下是jQuery对象)上调用方法时,javascript设置this为指向该对象.所以,由于这种情况下的对象是一个jQuery对象,所以this就是这样.
事件处理程序回调函数不是方法调用,因此它的工作方式不同 - 它是一个回调,回调的调用者决定this使用.call()或设置什么.apply().对于大多数事件处理程序回调,代码专门决定设置this为触发事件的DOM对象.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |