Подтвердить что ты не робот

Предотвращение выполнения обработчика родительских событий

У меня есть дерево 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?

спасибо

4b9b3361

Ответ 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