jquery点击一切,但打开div

时间:2012-11-07 15:32:36

标签: jquery jquery-selectors

如何编写jquery操作,以便在点击网页上的任何内容时除了某个div,然后查询执行一个函数?

2 个答案:

答案 0 :(得分:5)

这是我的方式:

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

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

我们的想法是,您将click事件放在整个页面上,然后点击您不想执行操作的元素,并防止它将click事件传播到文档点击事件。

如果您正在进行任何其他点击事件,它可能会互相影响,但您可能还有这个问题......

P.S。感谢Adrian的原始答案,这使我能够通过修改他的方式更快地开发出这个解决方案。 :)

答案 1 :(得分: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。但实际上,click事件是由其父事件触发的。