2016-02-12 2 views
1

У меня есть .click() на div.Предотвращение прослушивания JQuery

Я добавил кнопку в div и теперь каждый раз, когда я нажимаю кнопку, то JQuery выполняет функцию, связанную с div и преформ действие на кнопке.

Я понимаю, почему это делается. Мне было интересно, не могу ли я, чтобы прослушиватель кликов игнорировал детей?

Есть ли функция/синтаксис для этого или мне нужно сделать это с нуля? div и кнопка вызывается #id.

ответ

2

Для того, чтобы слушатель событий игнорировать детей, вы можете проверить, что связанный элемент такой же, как мишень

$('div').on('click', function(e) { 

    if (e.target === this) { 
     // DIV was clicked, not children 
    } 

}); 

Или пойти по другому пути, предотвращая событие от бурлит

$('div button').on('click', function(e) { 
    e.stopPropagation(); 
}); 
+0

Для выполнения этой задачи достаточно первого. – choz

+0

@choz - любой из них решит проблему, просто отметив, что обычно есть два способа сделать это, останавливая щелчок от пузыря или просто игнорируя любые клики, которые не поступают из связанного элемента. – adeneo

+0

Я предпочитаю первый с тех пор, нам не нужно прикреплять к кнопке другой обработчик событий, чтобы избежать событий с пузырьками. – choz

Смежные вопросы