如果调用了e.preventDefault()
,可以在e.defaultPrevented
方法中看到。
e.stopPropagation()
是否有类似的属性?如果没有,如何确定?
答案 0 :(得分:7)
我没有通过jQuery查看他们的方法,但似乎你可以覆盖基础stopPropagation
对象上的Event
方法,设置一个标志,然后调用重写方法。 / p>
类似的东西:
var overriddenStop = Event.prototype.stopPropagation;
Event.prototype.stopPropagation = function(){
this.isPropagationStopped = true;
overriddenStop.apply(this, arguments);
}
答案 1 :(得分:5)
不,没有。
我可以说,因为jQuery的isPropagationStopped()
方法在内部不使用任何浏览器API,而是手动实现此功能。 (如果浏览器中有这样的功能 - 内置 - jQuery会使用它而不是手动执行。)
因此,在jQuery中,新的事件对象将获得此属性(继承):
isPropagationStopped: returnFalse
然后,当您在该事件对象上调用stopPropagation()
时,jQuery将手动更改此属性:
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
...
}
returnFalse
和returnTrue
是分别返回false
和true
的函数。
答案 2 :(得分:0)
在IE中,您可以检查属性e.cancelBubble
以检查本机停止。其他浏览器没有此功能。
但是,您可以自己跟踪它。由于它的性质,你无法在任何地方检查它,除了在停止传播本身的同一个处理程序中(事件不会冒泡,更多处理程序不会被调用),所以我可以'想象一下有必要的情况。你想做什么?
编辑:我认为你最初使用的是jQuery。对于那些:
您可以使用e.isPropagationStopped()
方法,该方法将检查jQuery是否已停止传播。如果传播在本地停止,这将无法分辨。