Можно ли с помощью JQuery добавить прослушиватель событий к любому элементу, который в настоящее время, или будет в будущем , иметь конкретный класс?
Я работаю над проектом, в котором активно используется contentEditable, поэтому модель DOM меняется, и элементы могут иметь классы, добавляемые и удаляемые в результате ввода данных пользователем.
Я хотел бы иметь возможность сказать «элементы класса X должны выполнять Y при нажатии», но если я правильно понимаю, $ («. X»). Click (Y) добавит прослушиватель событий только к элементам, которые в настоящее время имеют класс X.
Кроме того, если элемент больше не является частью класса X, он все равно будет иметь прослушиватель событий щелчка.
Как я могу это сделать?
Вы захотите использовать делегирование событий. jquery 1.7 сделал это более абстрактным, чем предыдущие версии, но выглядит примерно так:
$("#myWrappingElement").on("click", ".myclass", function(event){
alert($(this).text());
});
это в основном добавляет прослушиватель события click к элементу #myWrappingElement, и jquery автоматически смотрит, чтобы увидеть, что оригинал Целью события было и срабатывание правильной функции. это означает, что вы можете добавлять или удалять элементы .myclass и при этом запускать события.