#javascript #jquery #dom #observer-pattern
#javascript #jquery #dom #наблюдатель-шаблон
Вопрос:
Я пишу некоторый javascript, используя jQuery для вызова метода на всех узлах с классом datepicker
.
Вот что у меня есть:
$('.datepicker').my_method();
Это работает так, как ожидалось — он вызывает my_method
.
Однако я хочу иметь возможность вызывать my_method
все новые узлы, которые вставлены в DOM с помощью класса datepicker
.
Я хочу, чтобы функциональность была аналогична .live
методу, без указания eventType
.
Как мне это сделать?
Ответ №1:
Для этого и предназначен .livequery
плагин 🙂
Вы используете его следующим образом
$('.datepicker').livequery(function() {
$(this).my_method();
});
В качестве альтернативы, вы можете повторно запустить свой плагин при загрузке элементов, скажем, в случае $.ajax()
, вот так:
$.ajax({
//options..
success: function(data) {
$("#elementId").html(data);
$(".datepicker", data).my_method();
}
});
Этот метод выполняется только для .datepicker
элементов в ответе, не существующих ones…so он выполняется только / выполняет минимальный объем работы. Это наиболее эффективный подход с точки зрения потери кода наблюдения / обработки и т.д. … Но это не всегда вариант.
Комментарии:
1. Приятно! Пошел с
livequery
, поскольку я не вставлял с помощью AJAX. Ta 🙂