конвертирование livequery в live / делегат /? - PullRequest
5 голосов
/ 25 октября 2011

Поиск не нашел решения моего вопроса, поэтому спрашиваю здесь.Я уже некоторое время использую livequery () в сочетании с live ().Обычно я использую live () для известных событий, таких как щелчок, но использую livequery для запуска определенного селектора и применения плагина.Например ...

$('#childDomains').livequery(function() {
  var element = $(this);
  element.jqGrid({
    // plugin initialization here
  });
});

Мне интересно, есть ли способ сделать то же самое, используя live () / делегат () или какую-нибудь другую классную функцию jQuery, о которой я не знаю.Я пытаюсь снизить нагрузку на свою зависимость, и я заметил, что livequery не обновлялся с 02-2010.

ОБНОВЛЕНИЕ: Я думаю, что я недостаточно ясен.У меня есть страница, которая использует jqGrid и превращает элемент TABLE в сетку данных jjGrid Ajax.Для этого не существует реального события щелчка.Страница, на которой находится эта таблица, загружается через ajax, и каждый раз, когда DOM видит $ ("# childDomains"), он должен применить плагин jqGrid к этому элементу.Как и мой пример с livequery.

Из моего понимания пока я не верю, что это возможно без livequery, но я хотел попросить убедиться.

1 Ответ

4 голосов
/ 10 марта 2012

Нет, явно не существует лучшего способа сделать это с помощью jQuery;Я бы сказал, что livequery - лучший метод на данный момент.

Это и другие возможные способы сделать это. Здесь кто-то прокрутил свой собственный код опроса, чтобы определить, когда элемент вставлен в DOM.Вы можете адаптировать это, но, насколько я вижу, livequery уже делает это для вас.

Другой способ - прослушивать DOMNodeInserted события, как указано здесь , но это устарело в Спецификации событий W3C уровня 3 из-за низкой производительности .Он также не совместим с IE .

В этом вопросе есть хорошее обсуждение по мониторингу событий DOMNodeInserted и альтернатива подключения к любым методам, которые могут изменить DOM,(Он немного старый, но из моих исследований ничего не изменилось).

В заключение продолжайте использовать livequery.

Также обратите внимание, что из jQuery 1.7 .live () (устарел ), а .delegate () ( заменено ) следует заменить на .on () (и .die () на .off () * 1032)*).Новые методы не предоставляют ничего, что могло бы разрешить вашу зависимость от livequery.

...