捕获使用jQuery执行的任何单击

时间:2010-07-18 21:46:10

标签: javascript jquery dom javascript-events onclick

noob方式这样做我猜是

$('*').click(function(){...});

但有没有办法可以捕获任何类型的点击,而无需为DOM中的每个对象注册一个监听器?


帮助会很棒。 =)

5 个答案:

答案 0 :(得分:30)

click事件默认为bubble up the DOM,因此您只需将click处理程序附加到根目录,如下所示:

$(document).click(function() {
  //do something
});

除非{* 3}}或return false上的元素上的处理程序,否则您将获得此处的点击。

答案 1 :(得分:17)

您可以在文档上使用事件委派来捕获所有点击。

jQuery将填充target的{​​{1}}属性以检索被点击的元素。

event

请注意,$(document).click(function(event){ // event.target is the clicked object }); 将是点击的最深元素。例如:如果event.target中有<span>,您将获得<a>,而不是<span>

如果您想捕获任何点击但想要检索特定元素(如类),您可以这样做:

<a>

除非在整个过程中元素上的事件处理程序执行event.stopPropagation()$(document).click(function(event){ $(event.target).closest(".clickable").each(function(){ // "this" is your "clickable" clicked }); }); ,否则您将获得此处的点击。

答案 2 :(得分:4)

如果只是将咔嗒附加到身体上呢?

$('body').click(function(e){ ... })

e.target应该包含点击的内容

答案 3 :(得分:4)

$('*').click( function() {...} )只会抓住您拨打.click()时存在的元素的点击次数。要捕获稍后可能创建的元素的点击次数,您需要像其他人建议的那样绑定到bodydocument

答案 4 :(得分:3)

怎么样:

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

任何点击都将在主体上,因为它是dom中所有可见节点的父节点。