это и $ (это) в виджете - PullRequest
3 голосов
/ 30 марта 2012

Что означают this и $ (this) внутри метода виджета, такого как create?

Например, имея такой виджет,

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

Заранее спасибо,

-Raja.

Ответы [ 5 ]

5 голосов
/ 30 марта 2012

Это в основном зависит от вызывающего метода _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

3 голосов
/ 03 апреля 2012

В обработчике стандартного виджета в стиле пользовательского интерфейса jQuery this будет ссылаться на элемент DOM, связанный с событием, $(this) создает оболочку jQuery около this, Элемент DOM (снова) доступен как this.

Но когда ваш виджет вызывает функции , обычно this ссылается на объект jQuery, для которого была вызвана функция, а не на конкретный элемент DOM. Затем вы работаете с соответствующим набором элементов в этом объекте jQuery.

2 голосов
/ 03 апреля 2012

В методе, интегрированном с jQuery:

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

значение this - это сам объект jQuery.Следовательно, нет никакой причины заключать this в другой вызов jQuery, хотя это не повредит.

При обратном вызове обработчику событий:

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

значениеthis является целевым элементом DOM события или целевым объектом, если событие инициируется на чем-то отличном от фактического DOM.

В других ситуациях обратного вызова jQuery, таких как .each(), например, значениеthis, как правило, определяется природой объекта jQuery.

В результате всего этого, что внутри встроенной функции с jQuery (первый пример), вы обычно не обернуть this в другой вызов jQuery;это уже объект jQuery.Во всех остальных случаях, если вы хотите использовать this со средствами jQuery, вы do должны обернуть его.

1 голос
/ 03 апреля 2012

это представляет конструктор, в котором вы находитесь. Например, в событии click, при нажатии на элемент dom, в функции конструктор функции;

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

На самом деле в $ нет ничего особенного (это).Есть функция с именем $, а "this" это ее параметр, например alert;

$(this);
//just like
alert("some string);
1 голос
/ 30 марта 2012

В этом контексте «this» является фактическим объектом виджета JQuery, который позволяет вам запрашивать такие вещи, как widgetName, widgetEventPrefix и т. Д., Тогда как «$ (this)» является просто объектом JQuery для «this», что вы можете получить свойства виджета с помощью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...