如果我将click
处理程序绑定到body
元素,当我单击页面上的任何内容时,将触发事件。我可以在每次点击时查看event.target
:
$("body").on("click", function(event) {
if (event.target.tagName == "BODY") {
...
}
});
但这似乎有点矫枉过正。有没有办法只在单击身体的空白区域时触发事件?
答案 0 :(得分:5)
您可以使用事件的eventPhase
属性。值2
表示事件当前正在触发目标元素:
$("body").on("click", function(event) {
//Cancel if not at target
if (event.eventPhase != 2) return;
//Other Code Here
});
答案 1 :(得分:1)
如果单击的元素具有正文父级,则可以检查每次单击。如果条件为假,则单击正文:
$("body").on("click", function(event) {
if ($(this).parents('body').length == 0) {
//Do something
}
});
在我看来,这不是一个好习惯,但这取决于你的代码和项目。
希望它有所帮助。
干杯。
答案 2 :(得分:1)
你应该放一个
event.stopPropagation()
关于您不想bubble
的所有孩子。