这个和$(this)在小部件中

时间:2012-03-30 13:00:11

标签: javascript jquery jquery-ui jquery-ui-widget

这和$(this)在像widget这样的widget方法中意味着什么?

例如,拥有这样的小部件,

$.widget("sample.CustomWidget", {
options:{
},
_create: function(){
// Here what do this and $(this) mean
}
});

提前致谢,

-Raja。

5 个答案:

答案 0 :(得分:5)

它基本上取决于_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

答案 1 :(得分:3)

在标准jQuery UI样式窗口小部件的事件处理程序中,this将引用与事件相关的DOM元素,$(this)创建一个jQuery包装器{ {1}},DOM元素(再次)可用this

但是当调用小部件函数时,通常this指的是调用函数的jQuery对象,而不是特定的DOM元素。然后,您可以对该jQuery对象中匹配的元素集进行操作。

答案 2 :(得分:2)

在与jQuery集成的方法中:

$.fn.yourFunction = function() {
  // ...
};

this的值是jQuery对象本身。因此,没有理由将this与jQuery的另一个调用包装起来,尽管它没有受到伤害。

在对事件处理程序的回调中:

$('#myButton').click(function() {
  // ...
});

this的值是事件的目标DOM元素,如果事件是在实际DOM之外的其他事件上触发的话,则是目标对象。

在其他jQuery回调情况中,例如.each()this的值通常由jQuery对象的性质决定。

所有这一切的结果是在一个集成的jQuery函数(第一个示例)中,你通常在另一个jQuery调用中包装this;它已经是一个jQuery对象了。在所有其他情况下,如果您想将this与jQuery工具一起使用,那么 do 必须将其包装起来。

答案 3 :(得分:1)

在该上下文中,“this”是实际的JQuery窗口小部件对象,它允许您查询诸如widgetName,widgetEventPrefix等内容,而“$(this)”只是“this”的JQuery对象,您可以使用。获取小部件属性。

答案 4 :(得分:1)

这表示您所在的构造函数。例如,在单击事件中,单击dom元素,在函数中构造函数;

function test{
    this.b = "hello jupiter";
}
var a = new test();
alert(a.b);

实际上,$(this)并没有什么特别之处。有一个名为$的函数,“this”是它的参数,如alert;

$(this);
//just like
alert("some string);