Наблюдение за вставкой новых DOM-узлов и вызов метода на них

#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 🙂