jQuery在空白处单击事件

时间:2009-08-21 02:22:30

标签: jquery

当用户使用jQuery单击页面上的空白区域时,我正在尝试捕获事件。例如,假设您有以下内容:

<html>
<head>
    <title>Test</title>
</head>
    <body>
        <p>Here's some text!</p>
    <body>
</html>

当用户点击之外的任何内容时,我想抓住该事件。

有没有办法捕捉这样的东西?

7 个答案:

答案 0 :(得分:4)

这似乎有效:

$(function() {
    $('body').click(function() {
        alert('clicked the page');
        return false;
    });
    $('*:not(body)').click(function() {
        alert('clicked an item!');
        return false;
    });
});

您将遇到的一个“问题”是段落默认是块元素,因此即使看起来您没有点击某个项目,单击句子的一侧也会产生项目点击。

答案 1 :(得分:3)

这适用于chrome。没试过其他浏览器。解决了stickmangumby的想法:

$('body').click( function (e) { 
    if ( e.target == this ) 
        alert('works'); 
});

答案 2 :(得分:3)

我正在寻找类似问题的解决方案 - 在单击文档时隐藏自定义工具提示,但在单击提示内部时则不会。我是这样做的(改变选择器以匹配问题):

$(document).bind('click', function(e) {
    if($(e.target).closest('p').length == 0) {
        //p is not clicked. do your stuff here
    }
});

答案 3 :(得分:2)

您可以观察onclick的文档,然后检查事件处理函数中的event.currentTarget。

答案 4 :(得分:1)

  

我正在制作一个小型的网络应用程序   类似于Taskpaper(适用于Mac)和   我希望它能模仿应用程序   行为。更多的概念证明   比什么都重要

根据你的评论,我不会特别担心身体。而是连接一个div,以便您可以约束您想要对事件做出反应的区域。在页面上没有其他元素的情况下,它是相同的。

对于它的价值,在任何网页上,如果点击任何地方的任何空白,你的用户会讨厌你 - 这将是一个糟糕的用户界面体验。

答案 5 :(得分:0)

你可以这样做(我认为)

$('body').not('p').click(function(){});

不确定它的效果如何。

答案 6 :(得分:0)

我不确定,但是尝试一下。

$('html').on('click',function(event){
    if(event['target'].tagName =='HTML'){
        //do stuff;
    }
})