2013-01-24 22 views
-2

我有一個元素#foo,它有點擊事件。元素#foo位於元素#bar中,該元素上也有點擊事件。一種消除元素單擊事件的方法

<div id="bar"> 
    <div id="foo" /> 
</div> 

當點擊#foo#bar事件被調用和#foo事件被忽略。這就是我想要的。

我正在尋找一種方式來刪除#foo元素的所有點擊事件,除了我剛剛設置的事件一切都在父母#foo事件。

編輯:這裏是jsFiddle demo。我想在第一場比賽之前打第二場比賽。

編輯#2:這裏是my code with your suggestions。不起作用。

+0

最頂級的onclick事件將根據事件委託模型首先處理。 – Arpit

+0

好的,你有嘗試過什麼嗎? – Johan

+0

我還沒有嘗試過任何東西,但我想我需要遞歸地去DOM樹和刪除事件。 – daGrevis

回答

1

如果您對富點擊事件,你不希望它的泡沫,你可以做到以下幾點:

$("#foo").on('click', function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); //this line will stop the click bubbling up the tree. 
}); 
+0

嗯,在我的例子中這是行不通的。實際情況是,有一個'$(「body」)。on(「click」,「#foo」,...',然後像5個節點一樣有$(「#baz .select」)。點擊(...'。我將這些行添加到第一個事件中,但它沒有得到事件調用! – daGrevis

+0

更新的問題與代碼顯示:您的建議不起作用。 – daGrevis

0

試試這個

$('#foo').click(function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    $('#bar').trigger('click'); 
}); 
+0

調用'e.preventDefault()'不會阻止事件冒泡到'#bar'。 –

+0

是的..謝謝..更新了我的答案.. – bipen

0

使用stopPropagation功能,看一個例子:

$("#foo").click(function(e) { 
    e.stopPropagation(); 
}) 
相關問題