3

this 和 $(this) 在像 create 这样的小部件方法中是什么意思?

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

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

提前致谢,

-拉贾。

4

5 回答 5

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

于 2012-03-30T13:05:15.713 回答
3

在标准 jQuery UI 样式小部件的事件处理程序this中,将引用与事件相关的 DOM 元素,$(this)创建围绕 的 jQuery 包装器this,并且 DOM 元素(再次)可用作this.

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

于 2012-04-03T11:41:55.240 回答
2

在与 jQuery 集成的方法中:

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

的值this是 jQuery 对象本身。因此,没有理由this用另一个对 jQuery 的调用来进行包装,尽管这并没有什么坏处。

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

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

的值this是事件的目标 DOM 元素,或者是目标对象(如果事件是在实际 DOM 以外的东西上触发的)。

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

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

于 2012-04-03T11:45:13.897 回答
1

在这种情况下,“this”是实际的 JQuery 小部件对象,它允许您查询诸如 widgetName、widgetEventPrefix 等内容,而“$(this)”只是“this”的 JQuery 对象,您无法获取使用的小部件属性。

于 2012-03-30T13:05:13.307 回答
1

this 代表你所在的构造函数。例如在单击事件中,被单击的 dom 元素,在函数中是函数的构造函数;

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

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

$(this);
//just like
alert("some string);
于 2012-04-03T12:02:47.960 回答