Помощь в разработке плагинов jQuery - PullRequest
0 голосов
/ 20 апреля 2011

Я читал пару уроков.Это ссылка на один из них: http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html

В нем автор говорит:

Вы заметите, что всякий раз, когда мне нужно было выбрать элемент в плагине,Я всегда использовал obj в качестве контекста (например, moreLink = $ ('. Truncate_more_link', obj)).Это необходимо, чтобы ограничить любой выбор текущим усеченным элементом.Без настройки контекста, подобного этому, вы получите непредсказуемые результаты.

Я читал подобные утверждения в других уроках, но я все еще не понимаю, что они на самом деле означают.На мой взгляд, я понимаю ...

$('.truncate_more_link', obj)

... что значит "Выбрать элементы с помощью класса .truncate_more_link, а также элемент, представленный переменной obj."

Нозвучит так, будто автор учебника говорит: «Выберите элементы класса .truncate_more_link, которые также являются фактическими элементами, передаваемыми в функцию плагина. Почему бы просто не сделать

$(obj)

вместо

$('.truncate_more_link', obj)  

Кажется, мне не хватает понимания сферы действия.

1 Ответ

0 голосов
/ 20 апреля 2011

Когда вы передаете два аргумента в jQuery, второй аргумент используется как «контекст» для первого.Короткая версия: $('foo', bar) означает точно то же самое , что и $(bar).find('foo').

Контекст селектора

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

$('div.foo').click(function() {
  $('span', this).addClass('bar');
});

Когда поиск селектора диапазонов ограничен контекстом this, только интервалы внутриэлемент clicked получит дополнительный класс.

Внутри контекст селектора реализован методом .find(), поэтому $('span', this) эквивалентно $(this).find('span').

http://api.jquery.com/jQuery/#jQuery1

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