2012-11-07 88 views

回答

5

這裏是我的方式:

$(document).on("click", function(){ 
    alert('foo'); 
}); 
$('#yourdiv').on("click", function(event){ 
    event.stopPropagation(); 
}) 

http://jsfiddle.net/v3N2T/5/

的想法是,你把整個頁面上的點擊事件,然後趕在元素上點擊一下,你不想做的動作並阻止它在文檔點擊事件之前傳播點擊事件。

,如果您有任何其他的單擊事件的東西怎麼回事,但你可能有問題,反正它可能衝突很嚴重......

附:感謝Adrian的原始答案,讓我能夠通過修改他的答案來更快地開發此解決方案。 :)

2

在jQuery 1.7,使用的on()鼓勵:

$(document).on("click", ":not(#yourdiv)", function(){ 
    //do your thing 

    //important: return false to avoid repeating the call for each DOM element in 
    //the hierarchy 
    return false; 
}) 

見更新小提琴:http://jsfiddle.net/adrianonantua/v3N2T/8/

現在,有一點需要注意:在撥弄例如,它會出現的不想要的div被點擊。但是,事實上,點擊事件是由其父母發起的。

+2

這也不起作用。 http://jsfiddle.net/v3N2T/它會執行它看起來像dom鏈上的每個元素的功能。即我點擊不是一個父母的div,並得到四個警報,我點擊不是div,並得到相同的四個警報。據推測,如果我把一個兄弟姐妹,並點擊,我會得到五個,因爲它只是沒有做你想要的div本身... – Chris

+1

好的好。當我應該做真正的工作時,讓我不必去完成我的解決方案。 ;-) – Chris

+0

@Chris固定傳播問題 –