Вопрос:

Javascript / Jquery одиночное целевое делегирование события

javascript jquery events

598 просмотра

2 ответа

538 Репутация автора

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

Например, когда у меня есть элемент Div внутри другого.

<div id='div1'>
  <div id='div2>
  </div>
</div>

Я использую следующий код Jquery, чтобы связать событие.

$('div').bind('click', function(event){
   alert(event.target.id)
}

Есть два окна предупреждения вместо одного. Я понимаю концепцию почему, потому что я нажимаю 2 деления.

Конечно, проблема на более глубоком уровне заключается в том, что когда я пытаюсь связать событие после этого события с помощью event.target, оно связывает x2 и так далее, и так далее.

Можно ли избавиться от привязки события на внешнем div и захватить только внутреннюю.

Заранее спасибо.

Автор: Dennis D Источник Размещён: 17.08.2010 06:34

Ответы (2)


3 плюса

556130 Репутация автора

Решение

Вы можете предотвратить всплытие события, используя event.stopPropgation()это:

$('div').bind('click', function(event){
  alert(event.target.id);
  event.stopPropagation();
});

Вы можете попробовать это здесь . Это «заманивает» в ловушку clickпервого <div>получателя, и не позволяет ему распространяться до родителей.

Автор: Nick Craver Размещён: 17.08.2010 06:37

0 плюса

2203 Репутация автора

Я думаю, вам просто нужно выбрать внутренний div в вашем вызове bind:

$('div:eq(0)').bind('click', function(event){
   alert(event.target.id)
}
Автор: desau Размещён: 17.08.2010 06:39
Вопросы из категории :
32x32