Предотвращение выполнения обработчика родительских событий
У меня есть дерево divs:
<div id="a" onclick="func">
<div id="b" onclick="func">
<div id="c" onclick="func">
</div>
</div>
</div>
Когда клик сделан на div, он делает его невидимым для детей - т.е. нажатие на "a" превратит "b" и "c" в невидимое.
function func{
if ($(childId).hasClass("visible")){
$(childId).removeClass("visible");
$(childId).addClass("invisible");
}
Проблема заключается в следующем: щелчок на "b" вызовет "a" и сделает "b" и "c" невидимым. Как отключить нажатие на "a" с помощью jQuery?
спасибо
Ответы
Ответ 1
Вы можете добавить обработчик для дочернего элемента, который предотвратит распространение события клика:
function handler(event) {
event.stopPropagation();
// now do your stuff
}
$('#a').add('#b').click(handler);
Этот путь на '#b'
не будет распространяться на '#a'
. Также не будет нажата кнопка '#c'
перейти на '#b'
и, следовательно, не на '#a'
.
Ответ 2
использовать
event.stopPropagation()
Остановка буферизации события родительские элементы, предотвращая любые родительские элементы обработчиков от событие.
при нажатии на b и c