this 和 $(this) 在像 create 这样的小部件方法中是什么意思?
例如,拥有这样的小部件,
$.widget("sample.CustomWidget", {
options:{
},
_create: function(){
// Here what do this and $(this) mean
}
});
提前致谢,
-拉贾。
this 和 $(this) 在像 create 这样的小部件方法中是什么意思?
例如,拥有这样的小部件,
$.widget("sample.CustomWidget", {
options:{
},
_create: function(){
// Here what do this and $(this) mean
}
});
提前致谢,
-拉贾。
它基本上取决于 _create 方法的调用者......无论如何:
this
指函数的“所有者”
$(this)
是上面的对象包装成一个jQuery对象
也可以看看:
http://www.quirksmode.org/js/this.html
http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm
在标准 jQuery UI 样式小部件的事件处理程序this
中,将引用与事件相关的 DOM 元素,$(this)
创建围绕 的 jQuery 包装器this
,并且 DOM 元素(再次)可用作this
.
但是当您的小部件函数被调用时,通常this
指的是调用该函数的 jQuery 对象,而不是特定的 DOM 元素。然后,您对该 jQuery 对象中匹配的元素集进行操作。
在与 jQuery 集成的方法中:
$.fn.yourFunction = function() {
// ...
};
的值this
是 jQuery 对象本身。因此,没有理由this
用另一个对 jQuery 的调用来进行包装,尽管这并没有什么坏处。
在事件处理程序的回调中:
$('#myButton').click(function() {
// ...
});
的值this
是事件的目标 DOM 元素,或者是目标对象(如果事件是在实际 DOM 以外的东西上触发的)。
在其他 jQuery 回调情况下,.each()
例如, 的值this
通常由 jQuery 对象的性质决定。
所有这一切的结果是,在与 jQuery 集成的函数(第一个示例)中,您通常不会在另一个对 jQuery 的调用中进行包装this
;它已经是一个 jQuery 对象。在所有其他情况下,如果您想使用this
jQuery 工具,则必须将其包装起来。
在这种情况下,“this”是实际的 JQuery 小部件对象,它允许您查询诸如 widgetName、widgetEventPrefix 等内容,而“$(this)”只是“this”的 JQuery 对象,您无法获取使用的小部件属性。
this 代表你所在的构造函数。例如在单击事件中,被单击的 dom 元素,在函数中是函数的构造函数;
function test{
this.b = "hello jupiter";
}
var a = new test();
alert(a.b);
实际上,$(this) 并没有什么特别之处。有一个名为 $ 的函数,“this”是它的参数,比如 alert;
$(this);
//just like
alert("some string);