我不禁要注意,在jQuery的源代码中有两个看似无用的功能(对于v1.9.1,它是第2702行和第2706行):
function returnTrue() { return true; } function returnFalse() { return false; }
解决方法
它是这样使用的:
stopImmediatePropagation: function() { this.isImmediatePropagationStopped = returnTrue; this.stopPropagation(); }
这里是ImmediatePropagationStopped是一种查询方法.使用像这个event.isImmediatePropagationStopped()
当然,您可以定义一个实例方法,如:
event.prototyoe.isImmediatePropagationStopped = function() { return this._isImmediatePropagationStopped }; stopImmediatePropagation: function() { this._isImmediatePropagationStopped = true; //or false at other place. this.stopPropagation(); }
但是你必须引入一个新的实例属性_isImmediatePropagationStopped来存储状态.
通过这个技巧,您可以在这里切断一些实例属性以保持true / false状态,如_isImmediatePropagationStopped,_isDefaultPrevented等.
所以在我看来,这只是一个代码风格的问题,不是对或错.
PS:事件的查询方法,如isDefaultPrevented,isPropagationStopped,isImmediatePropagationStopped在DOM事件级别3中定义.