如果我将click
处理程序绑定到body
元素,当我点击页面上的任何东西时,就会触发事件,我可以在每次点击时检查event.target
:
$("body").on("click", function(event) {
if (event.target.tagName == "BODY") {
...
}
});
但那似乎有点矫枉过正。有没有办法只在点击身体本身的空白区域时才触发事件?
如果我将click
处理程序绑定到body
元素,当我点击页面上的任何东西时,就会触发事件,我可以在每次点击时检查event.target
:
$("body").on("click", function(event) {
if (event.target.tagName == "BODY") {
...
}
});
但那似乎有点矫枉过正。有没有办法只在点击身体本身的空白区域时才触发事件?
3条答案
按热度按时间wz1wpwve1#
可以使用event的
eventPhase
属性,2
表示事件当前正在触发目标元素:在此拨弄:http://jsfiddle.net/o0yptmmp/
dbf7pr2w2#
你应该放一个
所有你不想让
bubble
上升的孩子jQuery文档:http://api.jquery.com/event.stoppropagation/.
noj0wjuj3#
如果在每次单击时检查所单击的元素是否具有body父级,则可以执行此操作。如果条件为false,则表示您正在单击body:
在我看来,这不是一个好的实践,但这取决于您的代码和项目。