Обработчики событий, добавленные непосредственно к объекту, добавляются только к этому конкретному объекту DOM. Если вы затем добавите или замените больше объектов DOM, у этих объектов DOM не будет ни одного из этих обработчиков событий. Вам придется либо вручную добавить обработчики событий после создания или замены объектов DOM, либо вам придется переключиться на использование делегированной обработки событий.
Делегированная обработка событий привязывает обработчик события к общему родительскому объекту (который не заменен) и использует тот факт, что многие события вызывают пузырьки родительской цепочки, чтобы обработать событие из общего родителя. Это позволяет свободно создавать или заменять дочерние элементы, но все же имеет один обработчик событий, который работает для всех дочерних объектов.
Вы можете прочитать намного больше о том, как сделать делегированных обработки в этих других ответах событие:
jQuery .live() vs .on() method for adding a click event after loading dynamic html
Does jQuery.on() work for elements that are added after the event handler is created?
JQuery Event Handlers - What's the "Best" method
Как показано в этих ссылочных ответов, общее идея такова:
$("#staticParentSelector").on("click", ".selectorForDynamicChildren", function(e) {
// event handler code here
});
Почему вам нужно подождать 0.01 секунд, прежде чем добавить обработчик щелчка? Ожидаете ли вы что-нибудь [load] (https://api.jquery.com/load-event/)? –
Каковы эти динамические изменения, на которые вы ссылаетесь? Возможно ли, что элемент, который вы применили обработчик кликов, был удален из DOM? –