我有一个委托父级,用于侦听具有特定类别的一组子级中的单击事件。
$(".toggle_group").on("click",".toggle",function(e){ .. });
这是 html 的一个例子
<div class='toggle_group'>
<a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
<a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
<a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
<a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
</div>
问题是孩子们a.toggle
将事件传播到父级,在不应该触发处理程序时触发处理程序。根据 jQuery 文档,您无法停止实时/委托事件侦听器上的事件传播。
如何阻止 a.toggle 的这些子子级将事件传播给父级?或者在某些情况下可能允许这样做?
你看到的内部 div.toggle
应该是一个下拉菜单。当您单击菜单时,它不应该切换,只有当您单击切换链接时...
检查此页面中的评论,至少有一些声称找到了解决方法。http://api.jquery.com/event.stopPropagation/ http://api.jquery.com/event.stopPropagation/
复制来自此处的评论以供将来参考:
麦克W:
解决 .live() 事件传播问题。已创建节点
动态地不会收到事件,直到他们的父母已经
收到了。这会导致时髦并停止传播并且
PreventDefault 无法解决此问题。修复:添加行
if(event.target != this){ 返回 true; }
到父节点事件处理程序的顶部。这将阻止
当事件实际上被发送到 a 时,父事件不会被触发
子节点,并且(与 return false 不同)会将事件传播到
预期节点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)