У меня есть кнопка для загрузки. Кроме того, обработчик событий на основе jQuery (использует делегирование событий), который устанавливает/отключает загрузочный активный класс на соответствующем .btn на основе события click.Как отфильтровать дочерние элементы в обработчике событий?
Проблема возникает, когда у моих кнопок есть html-элементы внутри нее. Когда вы нажимаете на дочерний элемент кнопки, класс .active устанавливается на дочерние элементы .btn.
Как получать события только для точных элементов, которые меня интересуют?
http://jsfiddle.net/0nc3wjq4/ Чтобы воспроизвести проблему, нажмите на одно из номеров нажатием кнопки, а затем нажмите другой номер на другой кнопке.
<div class="btn-group btn-group-justified pipeline" role="group">
<a href="#" class="btn btn-default" role="button">
<h3 class="text-center">767</h3>
<p class="text-muted text-center">Stage1</p>
</a>
</div>
Event Handler
$(".btn-group").on("click", ".btn", function(e) {
$(this).siblings(".active").removeClass('active'); // previous
$(e.target).addClass('active'); // current
});
Огромное спасибо. Было бы здорово, если бы вы могли указать на документацию или объяснить разницу между $ (this) и e.target @ bg101 – smartnut007
Это в документации [jQuery.on] (http://api.jquery.com/on/): _Примечание, что 'this' не может быть равно« event.target », если событие пузырилось из элемента-потомка. – Barmar