Добавление 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+)