5

我使用了一些jquery 工具,并开始浏览twitter bootstrap src

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

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

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

this.$element.trigger(e);

我不明白为什么这比直接调用要好:

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

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

有人可以向我解释为什么$.Event构造函数比使用事件字符串调用触发器更有优势吗?

非常感谢

4

2 回答 2

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);
于 2012-08-28T01:26:14.897 回答
0

看了bootstrap源码后,相信你一定指的是这个:

var that = this
    , e = $.Event('show')

this.$element.trigger(e)

if (this.isShown || e.isDefaultPrevented()) return

他正在定义e,以便他以后可以检查默认操作是否已被阻止e.isDefaultPrevented()

于 2012-08-28T01:30:07.437 回答