【发布时间】:2014-09-09 04:47:36
【问题描述】:
在 javascript 中使用 stopPropagation 时,我有点头疼。根据many different sources stopPropagation 应该停止将事件冒泡到父元素,但是,当我使用它时,它似乎停止在第一次单击后调用事件。我编写了一段非常简单的代码来重现以下行为:
HTML:
<div id="root">
<div id="top">
<h1>Click Me!</h1>
</div>
</div>
js/jQuery:
var myEvent = document.createEvent("Event");
myEvent.initEvent("boop", true, true);
$("#root").on('boop', function (e) {
alert("root boop!");
});
$("#top").on('boop', function (e) {
// After this is called, this event handler will never fire again.
e.stopPropagation();
alert("top boop!");
});
$("h1").click(function (e) {
$("#top").get(0).dispatchEvent(myEvent);
// I know that $("#top").trigger will prevent the problem, what is wrong with the form above?
});
还有一个Fiddle。
【问题讨论】:
-
我不明白你在问什么?在小提琴中,没有问题...?
-
@Karl-AndréGagnon 真的吗?所以每次点击都会弹出提示框?
-
您没有在问题中指定,所以是的,我没有多次点击。阅读当前答案后,我现在明白了这个问题。下一次,解释如何重现问题;)
-
@Karl-AndréGagnon 来自问题:'......但是,当我使用它时,它似乎阻止了事件被调用......' 代码中有一条注释说明了它也是。下次,请阅读问题;)
标签: javascript jquery html