jQuery Event构造函数

时间:2012-08-28 01:03:41

标签: javascript jquery events

我与jquery tools进行了一些工作,我开始浏览twitter bootstrap src

我注意到的一件事是使用$.Event构造函数来触发事件。

在许多情况下,(例如引导模式),您会发现如此触发的事件:

var e = $.Event('show');

this.$element.trigger(e);

我不知道为什么这比直接打电话更好:

this.$element.trigger('show');

所以我很想知道使用jQuery Event构造函数有什么好处。我在文档中读到你可以为事件附加任意属性,这对我来说是完全合理的。然而,我不明白为什么可能有利于使用构造函数,如果你根本没有向事件添加任何属性。

有人可以向我解释为什么$.Event构造函数优于使用事件字符串调用trigger吗?

非常感谢

2 个答案:

答案 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()是否阻止了默认操作。