我需要停止子元素向父元素传递事件,我有一堆包含a
的li
标签。
$('li a[rel=close]').live('click', function(e){
e.stopPropagation();
e.preventDefault();
})
但这并不能阻止事件发生。有什么建议吗?
我需要停止子元素向父元素传递事件,我有一堆包含a
的li
标签。
$('li a[rel=close]').live('click', function(e){
e.stopPropagation();
e.preventDefault();
})
stopPropagation
在使用 live
方法时存在问题,来自 jQuery 的 stopPropagation 文档 -
由于 .live() 方法处理事件时,它们已经传播到文档的顶部,因此无法停止传播 live 事件。
正如 Rob W 所说,你的代码在使用 bind
时会很好地工作,这里是一个演示 - http://jsfiddle.net/TmKyT/
stopPropagation
可以阻止冒泡触发祖先的 live 事件,但它会触发在冒泡中使用 bind 绑定的其他监听器。http://jsfiddle.net/yEnzC/ - David Hellsing.bind
代替.live
。live
事件在传播树的末端触发。只有当您想要为稍后创建的元素绑定事件侦听器时,live
才比bind
更有用。$('ul.parent').delegate('li a[rel=close]', 'click', function( event ) {
}