如何检测页面上的任何点击?

时间:2016-01-15 21:00:57

标签: javascript jquery

我想在页面的任何元素上捕获click事件。但我无法点击特定的页面元素。请参见示例https://jsfiddle.net/rdnf5m1f/

 $(function() {
        $(".profile").on( "click","a", function() {
            console.log(1);
          return false;
        });

        // below not work
        $("body").on( "click","*", function() {
            console.log(2);
        });

        $("body").click(function() {
            console.log(2);
        });

        $(window).click(function() {
            console.log(2);
        });
 });

为什么?

5 个答案:

答案 0 :(得分:2)

按照你的需要"全部捕捉,除了一些"。添加一个类' nocapture'对于您不想捕获的元素,并使用脚本:

jQuery('*:not(.nocapture)').on('click', function(e){
    e.stopPropagation();
    console.log('Element clicked', this); 
})

答案 1 :(得分:1)

当你从jQuery函数return false时,它执行stopPropagation,这将阻止其他处理程序执行。在这种情况下,我认为您正在寻找以下代码。

$(document).on('click', function() {
  console.log(2);
});

答案 2 :(得分:0)

将您的代码包含在某种类型的就绪处理程序中,例如document

$(function() {
    $("body").click(function() {
        console.log(2);
    });
});

Check this out

答案 3 :(得分:0)

<强> HTML

<body>
    <div class="profile">
    <a href="">Bla bla bla</a>
    </div>
</body>

<强>的jQuery

$(window).on( "click", function() {

  alert("click");

});

<强> FIDDLE

答案 4 :(得分:0)

您可以使用e.target属性来排除某种元素类型或类别。

var tagsToExclude = 'a,div';
$(document).click(function(e) {   
   if(tagsToExclude.indexOf(e.target.nodeName.toLowerCase()) == -1)
       alert('Clicked');
     e.preventDefault();
});

示例:https://jsfiddle.net/DinoMyte/rdnf5m1f/4/