CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult

Клик на блоке внутри блока вызывает event блока родителя, как избежать?

Если див внутри дива.
У родителя есть event on по которому он скрывается.
У чайлда есть такой-же event по которому совершается другое действие.
Но при клике на чайлде вызывается его действие и действие родителя.
Как совершать только действие чайлда?
  • Вопрос задан
  • 13774 просмотра
Решения вопроса 1
jakulov
@jakulov
Думаю через stopPropagation:

$('#child').on('event', function(event){
 event.stopPropagation(); // запрещает дальнейщую передачу события
// обработка события
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Чтобы не просто скопипастить код со stopPropogation, а понимать почему так, советую прочитать что такое фазы capturing и bubbling в событиях, какие есть модели (W3C DOM vs IE DOM). Ну а следующая ссылка наглядно покажет как обрабатывается событие:
www.quirksmode.org/js/eventexample.html
Ответ написан
Комментировать
@iamnothing
Внутри функции обработчика child добавьте вызов stopPropogation(), который необходим для предотвращения всплытия события (именно это и происходит у вас):
$( ".child" ).click(function( event ) {
    event.stopPropagation();
    // ...
});
Ответ написан
Комментировать
Комментировать
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Используйте stopPropagation()
codepen.io/iiil/pen/DJHab
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы