cc *_*ung 11 javascript triggers javascript-events
如果e.preventDefault()被调用,可以看到反映在e.defaultPrevented方法中.
是否有类似的财产e.stopPropagation()?如果没有,如何确定?
我没有通过jQuery查看他们的方法,但似乎你可以覆盖stopPropagation基础Event对象上的方法,设置一个标志,然后调用重写的方法.
就像是:
var overriddenStop = Event.prototype.stopPropagation;
Event.prototype.stopPropagation = function(){
this.isPropagationStopped = true;
overriddenStop.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)
不,没有.
我可以说,因为jQuery的isPropagationStopped()方法在内部不使用任何浏览器API,而是手动实现此功能.(如果浏览器中有这样的功能 - 内置 - jQuery会使用它而不是手动执行.)
所以,在jQuery中,一个新的事件对象将获得这个属性(继承):
isPropagationStopped: returnFalse
Run Code Online (Sandbox Code Playgroud)
然后,当您调用stopPropagation()该事件对象时,jQuery将手动更改此属性:
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
...
}
Run Code Online (Sandbox Code Playgroud)
returnFalse和returnTrue是其返回功能false和true分别.