2011-10-08 259 views
4

我是要阻止事件从孩子传播到父母,我有一堆li标签包含a防止点击事件影响父jQuery

$('li a[rel=close]').live('click', function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
}) 

但它没有停止事件。任何建议?

+0

事件是否至少起火?你能分享你的HTML代码吗? –

+0

@SoufianeHassou是的。 – andrei

+0

[child action不会触发父级jquery]可能的重复(http://stackoverflow.com/questions/6975946/child-action-doesnt-trigger-parent-jquery) – AXMIM

回答

2

stopPropagation具有live问题,从jQuery stopPropagation文档 -

由于.live()方法处理的事件一旦它们传播到 文档的顶部,它是不可能停止传播的 现场活动

正如罗布W公司已经表示您的代码将很好地工作bind,这里有一个演示 - http://jsfiddle.net/TmKyT/

+0

''stopPropagation''适用于阻止泡泡从触发祖先**活**事件,但它会触发泡沫中的其他监听器,绑定使用绑定** http://jsfiddle.net/yEnzC/ – David

1

使用.bind而不是.live。在传播树的末尾触发live事件。 live仅当您希望为稍后创建的元素绑定事件侦听器时才比bind更有用。

0

也许尝试使用委托?

$('ul.parent').delegate('li a[rel=close]', 'click', function(event) { 

}