Когда вы делаете что-то вроде этого:
$("selector").click(function() { ... });
... только те элементы, которые в DOM уже будет соответствовать селектору и имеют их щелчок события зацепили; если вы добавите элементы позже, то будет иметь, соответствующий селектору, они не будут автоматически подключены после факта.
Вы можете использовать делегирование событий, казалось бы подключить их автоматически с помощью delegate
или (с более новыми версиями JQuery) один из on
вариантов:
$("container_for_elements").delegate("selector", "click", function() { ... }));
$("container_for_elements").on("click", "selector", function() { ... }));
(Обратите внимание, что порядок аргументов немного отличается между два.)
с делегацией событий, что на самом деле происходит то, что JQuery перехватывает click
на контейнере, и когда щелчок пузырится в контейнер, он проверяет путь событие потребовалось, чтобы увидеть, если какой-либо из т он соединяет элементы между селектором. Если это так, он запускает обработчик, как если бы вы подключили его к элементу, даже если он фактически подключен к контейнеру.
Конкретный пример:
<div id="container">
<span>One</span>
<span>Two</span>
<span>Three</span>
</div>
Если мы делаем это:
$("#container").delegate("span", "click", function() {
console.log($(this).text());
});
... затем нажав на одну из пролетов покажут его содержимое, и если мы делаем это:
$("#container").append("<span>Four</span>");
... этот диапазон будет обработан автоматически, поскольку обработчик события находится на контейнере , а затем селектор проверяется, когда происходит событие, поэтому не имеет значения, что мы добавили элемент позже.
Код был бы полезен – twilson