У меня есть элемент #foo, и на нем есть событие click. Элемент #foo находится в элементе #bar, который также имеет событие щелчка.

<div id="bar">
  <div id="foo" />
</div>

При нажатии #foo событие #bar вызывается, а событие #foo игнорируется. Это то, что я хочу.

Я ищу способ удалить все события кликов из элемента #foo, кроме моего только что установленного события и , всех событий, которые есть у родителей для #foo.

Изменить . Вот демонстрационная версия jsFiddle. Я хочу, чтобы второе событие было вызвано до первого.

Изменить # 2: . Вот мой код с вашими предложениями. Не работает

-2
daGrevis 24 Янв 2013 в 13:53

3 ответа

Лучший ответ

Если у вас есть событие щелчка на еде, и вы не хотите, чтобы оно всплыло, вы можете сделать следующее:

$("#foo").on('click', function(e){
     e.preventDefault();
     e.stopPropagation(); //this line will stop the click bubbling up the tree.
});
1
azzy81 24 Янв 2013 в 09:57

Используйте функцию stopPropagation, см. Пример:

$("#foo").click(function(e) {
   e.stopPropagation();
})
0
Shimshon Korits 24 Янв 2013 в 09:58

Попробуй это

$('#foo').click(function(e){
     e.preventDefault();
     e.stopPropagation(); 
     $('#bar').trigger('click');
});
0
bipen 24 Янв 2013 в 10:01