Добавление jQuery live search к динамическим входам

Я использую плагин для поиска в реальном времени jQuery, и мне нужно связать его со всеми экземплярами класса. Мои экземпляры классов могут быть или не быть динамическими.

Я знаю, что могу выполнить привязку к экземплярам динамического класса, вложив его в функцию jQuery Live, например $(".myLink").live(click function(){});

Однако мне также нужны нединамические классы, чтобы иметь привязку.

Как я могу сделать это, не задавая привязку liveSearch дважды? (Однажды в документе, готовом для статических элементов, и однажды в моем обработчике щелчка для динамических элементов).

Вот мой код liveSearch, не уверен, что это важно.

$(".myClass").liveSearch({
url: 'foo.php',
id: 'liveSearchID',
parent: '.myParent',
});

Большое спасибо.

1 ответ

Решение

Вы могли бы использовать JQuery .on() связывать liveSearch представить (не динамические) или будущие элементы, такие как:

$("#parentContainer").on("click", ".myClass", function(){
  $(this).liveSearch({
     // options
  }); // liveSearch
}); // on

Обратите внимание, что вы должны подать заявку .on() в родительский контейнер вашего селектора .myClass а затем передать событие, .myClass как потомок селектор и обработчик.

Смотрите ДЕМО

.on() требуется jQuery 1.7+

РЕДАКТИРОВАТЬ (15 декабря 2012 - 4:13 вечера по тихоокеанскому времени):

Пользователи старых версий jQuery должны использовать .delegate() в предпочтении .live()... так что просто подправьте свой код .delegate(selector, eventType, handler) (еще подаю заявку .delegate() в родительский контейнер) вроде:

$("#parentContainer").delegate(".myClass", "click", function() {
  $(this).liveSearch({
     // options
  }); // liveSearch
}); // delegate

Смотрите новый DEMO, используя .delegate() (требуется jQuery v1.4.2+)

Другие вопросы по тегам