<!DOCTYPE html>
<html>
<head>
<script src="jquery-2.1.1.min.js" type="text/javascript"></script>
</head>
<body>
<div id="outer">
<div id="inner">
</div>
</div>
<script type="text/javascript">
$("#outer").on("myevent", function(event) {
alert(event.target.id);
event.stopPropagation();
return false;
});
$("div").trigger("myevent");
</script>
</body>
</html>
在上面的代码中,我期望事件
myevent
只被outer
div处理一次。但是我看到了两个警报:outer
和inner
。为什么stopPropagation
在这里不起作用,如何防止自定义事件传播到子元素?编辑:我想全局触发事件,例如
$("div").trigger("myevent");
,但我只想在订阅事件的地方处理它。
#inner
。当它冒泡出来时,它将由#outer
处理。 - Barmar#inner
中处理事件,它不会向上传播,但这并不是我想要的正解(我需要在处理程序中对target
做一些操作)。看起来,由于对 JavaScript 事件的理解不足,我的问题完全无效。 - rmflow#outer
捕获。请参见https://dev59.com/4W445IYBdhLWcg3w9Oss。 - Barmar