Я не уверен, почему следующий код не работает, может кто-то, пожалуйста, поищите меня? У меня есть настройка JSfiddle для демонстрации проблемы.jQuery: привязка обработчика события к добавленному классу
<div class="wrapper">
<div class="state_1">
<a href="#">state one</a>
</div>
</div>
<script>
$('.state_1 a').click(function(){
$(this).parent().removeClass('state_1').addClass('state_2');
$(this).html('state two');
});
/* SECOND CLICK: NEVER TRIGGERS? */
$('.state_2 a').click(function(){
alert("clicked!");
});
</script>
Таким образом, сама ссылка не имеет класса, но находится в «контейнере» DIV под названием «.state_1». При первом щелчке ссылки класс «state_1» удаляется из контейнера, а «state_2» добавляется в его место. (Мы также меняем текст привязки на «состояние два»). Все это работает.
Проблема заключается в том, теперь "контейнер" DIV должен иметь класс».state_2" , но:
$('.state_2 a').click();
... никогда не срабатывает?
Любые идеи? JSfiddle: https://jsfiddle.net/m5ctkzg2/
Спасибо, что посмотрели!
Избили меня к нему; вот фиксированная скрипка: https://jsfiddle.net/m5ctkzg2/1/ –
Ударьте меня тоже. Следует добавить фрагмент кода, чтобы показать его. – Stewartside
Спасибо @Satpal, я думал, что это что-то вроде этого! Стоит отметить, что вам нужно изменить BOTH связывание событий в .on(), потому что если вы меняете только второй, он запускается после первого щелчка. Я предполагаю, что сначала происходит событие .click(), затем событие .on() запускается после изменения класса. Спасибо также ** Rory McCrossan ** за обновленную версию JSfiddle! –