Допустим, у нас есть такая структура HTML
<div id="container">
<div id="nested">
<span id="someElement"></span>
</div>
</div>
... и наша цель - иметь прослушиватель событий на #container
только! Итак, привязываем слушателя (код jQuery)
$("#container").on('click', function(event) {
alert("container was clicked");
});
Это, конечно, работает, но моя проблема с этим подходом заключается в том, что, поскольку события обычно всплывают, этот слушатель также сработает, если мы на самом деле нажмем #nested
или #someElement
. Мое текущее решение только обрабатывать щелчок при нажатии на #container
состоит в том, чтобы сравнить this
с event.target
$("#container").on('click', function(event) {
if(this === event.target) {
alert("container was clicked");
}
});
Мой вопрос: считается ли это «лучшей практикой»? Есть ли лучший способ с помощью jQuery добиться того же результата «из коробки»?
Пример в действии: http://jsfiddle.net/FKX7p/