2012-11-07 65 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固定传播问题 –