2009-09-07 26 views
5

比方說,我有以下代碼:click事件不應該由它的孩子被觸發

<div id="parent"> 
    <div id="child"></div> 
</div> 

現在我附上一個onclick事件父DIV:

$('#parent').click(function() { ... }); 

有一個簡單的方法來阻止事件觸發時,我點擊子div?我不想做這樣的事情

$('#child').click(function() { return false; }); 

因爲孩子的div可以包含鏈接...

謝謝!

回答

8

檢查event target

以下代碼未經測試。

var div = document.getElementById('parent'); 
jQuery(div).click(function(event) { 
    if (event.target !== div) { 
    return false; 
    } 
}); 
+0

測試......這部作品 – 2009-09-07 15:45:28

2

stopPropagation

$('#child').click(function(event) { 
     event.stopPropagation(); 
     //... 
}); 
+0

的問題說,他不希望將事件附加到每個子元素。 – Quentin 2009-09-07 15:29:11

+0

@David Dorward,這裏說什麼? 「因爲孩子div可能包含鏈接...」 – 2009-09-07 15:46:04

+1

只是爲了保護這個答案有點:stopPropagation被使用,但preventDefault不是,這意味着即使你有一個處理程序分配爲點擊,你的鏈接仍然會觸發。 jQuery對添加事件處理程序的方式非常友好,以確保默認行爲和任何先前分配的處理程序(即內聯html)仍然按預期工作。 – 2009-09-07 16:24:23