我正在将本机Event类用于我自己的对象模型。
我发现并利用了Event.stopBubbling
属性,该属性在调用Event.stopPropagation()
之后确实设置为true。但是我似乎找不到任何Event.stopImmediatePropagation()
修改过的特殊属性。
如何确定事件是否调用了stopImmediatePropagation()
?
它是否修改了任何属性,或者我可以听一些钩子?
答案 0 :(得分:1)
使用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
来查找所需的内容。