У меня есть таблица с некоторым div внутри.
Я хочу, чтобы событие произошло, когда я нажимаю на элемент td, но также хочу, чтобы событие произошло, когда я нажимаю на элемент div. Как вы можете видеть в этой скрипте http://jsfiddle.net/rkGkp/1/, моя проблема в том, что когда я нажимаю на элемент div, запускаются как событие div, так и td, но я хочу, чтобы событие div было вызвано,
Я использую эти прослушиватели событий
$(function() {
$("#div").on("click", function() {
alert("a div is clicked");
});
});
$(function() {
$(".td").on("click", function() {
alert("a td is clicked");
});
});
Что я могу сделать, чтобы избежать того, чтобы элемент за моим div запускал событие?
Посмотрите здесь: FIDDLE
Я использовал stopPropagation()
КОД
$("#div").on("click", function(event) {
event.stopPropagation();
alert("a div is clicked");
});
Это самый простой способ добиться того, что вам нужно. Просто проверьте, находится ли цель клика в div:
$(function() {
$("#div").on("click", function() {
alert("a div is clicked");
});
});
$(function() {
$(".td").on("click", function(e) {
if(!$(e.target).is("#div")){
alert("a td is clicked");
}
});
});
$('.td').on("click", ":not(#div)", fn)
если вы хотите сделать это таким образом.