Внутри плагина jQuery вернуть 'this' или '$ (this)'? - PullRequest
5 голосов
/ 26 марта 2011

При создании плагина jQuery, что должно быть возвращено в функции $.fn? Это return this или return $(this)? Некоторые сайты, с которыми я сталкивался при поиске, используют первый, тогда как другие используют второй:

В чем разница и что предпочтительнее?

Ответы [ 2 ]

6 голосов
/ 26 марта 2011

Непосредственно внутри функции, которая живет на $.fn (прототип конструктора jQuery), this относится к экземпляру коллекции jQuery, на котором работает функция. Возвращение this является правильным. Заключение в $() просто добавляет ненужный вес вашему коду.

См. Контекстный раздел рекомендаций по созданию плагинов jQuery .

1 голос
/ 26 марта 2011

this - это объект jQuery, для которого была вызвана ваша функция;$(this) - это поверхностная копия объекта (еще один объект jQuery, ссылающийся на те же элементы DOM или любые объекты, которые содержались в оригинале).Как правило, this должно быть лучше, потому что 1) создание копии объекта jQuery занимает нетривиальное количество операций, 2) вы обычно не меняете свойства объекта jQuery.

Теперь, если вы do измените свойства, тогда они будут вести себя по-разному:

var foo = $('#id');
var bar = $(foo);
foo.baz = 1;
bar.baz; // undefined

, и в этом случае возврат $(this) может иметь больше смысла.Например, собственная функция jQuery add выполняет что-то подобное внутри:

var next = $(this);
// add parameter to next
return next;

, поэтому при добавлении элемента в объект jQuery он не изменяет оригинал:

var foo = $('html');
var bar = foo.add('body');
bar.length; // 2
foo.length; // 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...