Мне нужно добавить класс к элементу «на лету». Но после добавления класса все события, связанные с этим классом, работают только с элементами, чьи классы уже были определены при загрузке документа.Триггерные события из классов, назначенных впоследствии
Рассмотрите этот пример.
Text 1
еще не имеет класса, а Text 2
. Когда нажимается кнопка, myClass присваивается Text 1
, поэтому оба текста и текст 2 теперь относятся к классу myClass.
При щелчке элемента myClass появляется окно предупреждения, но это событие запускается только при нажатии Text 2
. Элемент, класс которого уже был определен при загрузке документа.
<button>Add class to Text 1</button><br />
<a href="#">Text 1</a> <br />
<a href="#" class="myClass">Text 2</a>
<script>
$(document).ready(function() {
$("button").click(function() {
$("a").addClass("myClass");
});
$(".myClass").click(function() {
alert("clicked!");
});
});
</script>
Вот скрипку: https://jsfiddle.net/zx8wuy97/
Других ссылки на эту тему: [JQuery .live() против методы .А() для добавления события нажатия кнопки мыши после загрузки динамического HTML] (http://stackoverflow.com/questions/8752321/jquery -live-vs-on-method-for-add-a-click-event-after-load-dynamic-ht/8752376 # 8752376) и [обработчики событий jQuery - лучший метод] (http://stackoverflow.com/вопросы/9730277/JQuery-EVENT-обработчики-Что-The-лучший метод/9730309 # 9730309). – jfriend00