Javascript jQuery事件构造函数
我已经和一些人一起工作过了,我开始浏览网页 我注意到的一件事是使用Javascript jQuery事件构造函数,javascript,jquery,events,Javascript,Jquery,Events,我已经和一些人一起工作过了,我开始浏览网页 我注意到的一件事是使用$.Event构造函数触发事件 在许多情况下,(例如引导模式),您会发现触发的事件如下: var e = $.Event('show'); this.$element.trigger(e); 我不明白为什么这比直接打电话好: this.$element.trigger('show'); 所以我想知道使用jQuery事件构造函数的优点是什么。我在文档中读到,您可以将任意属性附加到事件,这对我完全有意义。但是,我不明白的是,如果
$.Event
构造函数触发事件
在许多情况下,(例如引导模式),您会发现触发的事件如下:
var e = $.Event('show');
this.$element.trigger(e);
我不明白为什么这比直接打电话好:
this.$element.trigger('show');
所以我想知道使用jQuery事件构造函数的优点是什么。我在文档中读到,您可以将任意属性附加到事件,这对我完全有意义。但是,我不明白的是,如果您根本不向事件添加任何属性,为什么使用构造函数可能会有好处
有人能给我解释一下为什么$.Event
构造函数比使用事件字符串调用触发器更有优势吗
非常感谢如果您以后想为活动添加属性,那么它会更灵活一些;它可以帮助您了解事件触发后的状态,例如,如果有人呼叫或
除此之外,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);
在查看引导源代码之后,我相信您一定是指:
var that = this
, e = $.Event('show')
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
他正在定义
e
,以便稍后检查是否使用e.isDefaultPrevented()
阻止了默认操作。虽然这里的一切都是正确的,但它没有提到在引导模式插件中使用$.Event
。在bootstrap模式中,他定义了事件对象,以便稍后可以检查isDefaultPrevented
。感谢João的回答,这让我对jQuery如何处理事件有了更多的了解,@Fauntleroy在bootstrap的上下文中得到了正确的解释。再次感谢!啊。。。你完全正确。我不知道我怎么会错过。谢谢!