gpt4 book ai didi

javascript - 如何判断某个事件是否已调用 "stopImmediatePropagation()"?

转载 作者:行者123 更新时间:2023-12-03 01:37:09 32 4
gpt4 key购买 nike

我正在为我自己的对象模型重用 native 事件类。

我发现并使用了 Event.stopBubbling 属性,该属性在调用 Event.stopPropagation() 后确实设置为 true。但我似乎找不到任何由 Event.stopImmediatePropagation() 修改的特殊属性。

如何判断某个事件是否已调用 stopImmediatePropagation()

它是否修改了任何属性,或者也许是我可以监听的一些钩子(Hook)?

最佳答案

使用 jQuery:

如果您使用 jQuery 的 stopImmediatePropagation,那么我在其 GitHub 存储库上看到了以下 jQuery 代码。

https://github.com/jquery/jquery/blob/899c56f6ada26821e8af12d9f35fa039100e838e/src/event.js#L594

以下是 stopImmediatePropagation 的定义:

stopImmediatePropagation: function() {
var e = this.originalEvent;

this.isImmediatePropagationStopped = returnTrue;

if ( e && !this.isSimulated ) {
e.stopImmediatePropagation();
}

this.stopPropagation();
}

所以看起来 Event.isImmediatePropagationStopped 是找出您需要的内容的方法。

没有 jQuery:

如果您想在没有 jQuery 的情况下实现相同的目标,那么我认为没有本地方法可以确定 stopImmediatePropagation 是否实际被调用。但以下代码可用于覆盖原始 stopImmediatePropagation 并使其像上面一样工作。

stopImmediatePropagationOriginal = Event.prototype.stopImmediatePropagation;
Event.prototype.stopImmediatePropagation = function(event){
stopImmediatePropagationOriginal.bind(this).call(event);
this.isImmediatePropagationStopped=true;
};

因此,通过上面的代码,您可以使用 Event.isImmediatePropagationStopped 来找出您需要的内容。

关于javascript - 如何判断某个事件是否已调用 "stopImmediatePropagation()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51015910/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com