Как избежать событий на элементах позади других в HTML и JavaScript / jQuery

0

У меня есть таблица с некоторым 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 запускал событие?

Теги:

2 ответа

3
Лучший ответ

Посмотрите здесь: FIDDLE

Я использовал stopPropagation()

КОД

$("#div").on("click", function(event) {
    event.stopPropagation();
    alert("a div is clicked");
});
0

Это самый простой способ добиться того, что вам нужно. Просто проверьте, находится ли цель клика в 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");
      }
   });
});
  • 0
    Также можно просто сделать $('.td').on("click", ":not(#div)", fn) если вы хотите сделать это таким образом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню