我与jquery tools进行了一些工作,我开始浏览twitter bootstrap src。
我注意到的一件事是使用$.Event
构造函数来触发事件。
在许多情况下,(例如引导模式),您会发现如此触发的事件:
var e = $.Event('show');
this.$element.trigger(e);
我不知道为什么这比直接打电话更好:
this.$element.trigger('show');
所以我很想知道使用jQuery Event构造函数有什么好处。我在文档中读到你可以为事件附加任意属性,这对我来说是完全合理的。然而,我不明白为什么可能有利于使用构造函数,如果你根本没有向事件添加任何属性。
有人可以向我解释为什么$.Event
构造函数优于使用事件字符串调用trigger吗?
非常感谢
答案 0 :(得分:1)
如果您想稍后向事件添加属性,那么灵活;并且它可以帮助您在触发事件后知道事件的状态,例如,如果有人呼叫stopPropagation()
或preventDefault()
。
除此之外,jQuery将简单地采用事件类型(string
),将其包装在$.Event
对象中并对其进行规范化。以下是jQuery的相关源代码:
event = typeof event === "object" ?
// jQuery.Event object
event[ jQuery.expando ] ? event :
// Object literal
jQuery.extend( jQuery.Event(type), event ) :
// Just the event type (string)
jQuery.Event(type);
答案 1 :(得分:0)
看了一下bootstrap源代码后,我相信你一定是指这个:
var that = this
, e = $.Event('show')
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
他定义了e
,以便稍后检查e.isDefaultPrevented()
是否阻止了默认操作。