Javascript / Jquery单事件目标委派

时间:2010-08-17 18:34:22

标签: javascript jquery events

我意识到event.target冗余可能在将来与下一级别的另一个事件绑定时会导致很多问题。

例如,当我在另一个内部有一个Div元素时。

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

我使用跟随Jquery代码来绑定事件。

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

有两个警告框而不是一个。 我理解为什么这个概念是因为我点击了2个div。

当然,更深层次的问题是,当我尝试使用event.target相应地绑定事件后,它会绑定x2等等。

是否可以摆脱外部div上的事件绑定并仅捕获内部。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用from bubbling阻止事件event.stopPropgation(),如下所示:

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

You can give it a try here。这会将click“陷阱”在获得它的第一个<div>上,并且不会让它传播给任何父母。

答案 1 :(得分:0)

我认为你只需要在bind调用中选择内部div:

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