Javascript 仅当单击元素而不是其子元素时触发事件
如果我将Javascript 仅当单击元素而不是其子元素时触发事件,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,如果我将click处理程序绑定到body元素,当我单击页面上的任何内容时,就会触发事件。我可以在每次单击时查看事件。target: $("body").on("click", function(event) { if (event.target.tagName == "BODY") { ... } }); 但这似乎有点过分了。只有当单击身体本身的空白区域时,是否有触发事件的方法? ,如果单击的元素有一个体父,则可以检查每一次单击。如果条件为false,则单击主体: $("bod
click
处理程序绑定到body
元素,当我单击页面上的任何内容时,就会触发事件。我可以在每次单击时查看事件。target
:
$("body").on("click", function(event) {
if (event.target.tagName == "BODY") {
...
}
});
但这似乎有点过分了。只有当单击身体本身的空白区域时,是否有触发事件的方法? ,如果单击的元素有一个体父,则可以检查每一次单击。如果条件为false,则单击主体:
$("body").on("click", function(event) {
if ($(this).parents('body').length == 0) {
//Do something
}
});
在我看来,这不是一个好的实践,但这取决于您的代码和项目
希望能有帮助
干杯。如果每次单击时都检查所单击的元素是否有主体父元素,则可以执行此操作。如果条件为false,则单击主体:
$("body").on("click", function(event) {
if ($(this).parents('body').length == 0) {
//Do something
}
});
在我看来,这不是一个好的实践,但这取决于您的代码和项目
希望能有帮助
干杯。你应该在
event.stopPropagation()
在所有你不想泡泡的孩子身上
jQuery文档:。您应该在
event.stopPropagation()
在所有你不想泡泡的孩子身上
jQuery文档:.您可以使用event的属性。值2
表示事件当前正在触发目标元素:
$("body").on("click", function(event) {
//Cancel if not at target
if (event.eventPhase != 2) return;
//Other Code Here
});
在这里摆弄:您可以使用event的属性。值2
表示事件当前正在触发目标元素:
$("body").on("click", function(event) {
//Cancel if not at target
if (event.eventPhase != 2) return;
//Other Code Here
});
小提琴:我想你指的是孩子而不是兄弟姐妹。有多少页面正文没有其他元素覆盖?通常一点也不多——边缘有一点填充物。我认为你应该防止
冒泡!?!我想你指的是孩子而不是兄弟姐妹。有多少页面正文没有其他元素覆盖?通常一点也不多——边缘有一点填充物。我认为你应该防止冒泡!?!这不仅仅是杀伤力过大(用OP自己的话来说)。@MelanciaUK是的,这是一个很小的底线p这不仅仅是杀伤力过大(用OP自己的话来说)。@MelanciaUK是的,这是一个很小的底线PThats a.w.e.s.o.m.e!!那是a.w.e.s.o.m.e!!按照您的解释,主体内的任何嵌套元素都将触发单击,以及单击整个页面的
标记或窗口。但是,您的代码仅在
和窗口
案例中中断。按照您的解释,正文中的任何嵌套元素都将触发单击,以及单击整个页面的
标记或窗口
。但是,您的代码仅在
和窗口中出现中断。