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

How to detect any click on the page?

本文关键字:任何点 何检测 检测      更新时间:2023-09-26

我想捕获页面任何元素上的点击事件。但是我无法点击特定的页面元素。请参阅示例 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);
        });
 });

为什么?

按照您需要的"捕获所有内容,除了一些"。将类"nocapture"添加到您不想捕获的元素中,并使用脚本:

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

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

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

将您的代码包装在某种现成的处理程序中,例如 document .

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

看看这个

可以使用

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/

HTML

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

jQuery

$(window).on( "click", function() {
  alert("click");
});

小提琴