2011-10-08 251 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) { 

}