jQuery使用事件冒泡和嵌入的div

时间:2013-09-28 02:22:00

标签: jquery html event-bubbling

我在使用jQuery时遇到了问题。

我正在用javascript动态创建div,这就是使用事件冒泡来将这个div与我的jQuery函数绑定的原因。我正在使用标签主体开始使用我正在创建的productId属性来查找div。问题是当使用productId属性在div中的一个div中单击时不运行。仅在div的不包含其他嵌入div的部分中。 ¿有人可以帮我吗? ;)

这是代码:

<div class="cartProduct" productId="2">
   <div class="names">Patatoes</div>
   <div class="units">5</div>
</div>

$('body').click(function(event) {
  if($(event.target).is('[productId]')) {
     ...
  }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

$('body').on('click','[productId]',function(event) {
   // do something
});

演示:http://jsfiddle.net/L5jg8/

这使用.on() method的委托形式。当发生对主体的单击时,jQuery将检查它是否在与第二个参数中的选择器匹配的元素上。 (如果您使用旧版本的jQuery,则需要使用.delegate()而不是.on()。如果您使用的是旧版本,请尝试.live()。)

您现有的代码不起作用,因为event.target为您提供了启动事件的DOM元素,即您点击的最低级别的子级(您发现它可能是其中一个孩子)你试图测试的div。)