jQuery On事件和触发器的顺序

时间:2013-02-01 19:39:56

标签: javascript jquery events triggers

请参阅以下内容:

$('body').on('whyhellothere', function(){

    console.log('done...');                                     

});

$('body').triggerHandler('whyhellothere');

此代码段返回:

done...

如果我们改变订单:

$('body').triggerHandler('whyhellothere');

$('body').on('whyhellothere', function(){

    console.log('done...');                                     

});

此代码段不返回任何内容。为什么会这样?

2 个答案:

答案 0 :(得分:2)

如果你在森林里喊叫,那么我来了,我什么都听不到,是吗?

您在触发事件后注册事件处理程序。注册处理程序只能侦听在开始侦听后触发的事件。

这是简单的物理学:P

答案 1 :(得分:0)

自上而下处理Javascript。它不会将您的on调用识别为应在其他内容之前处理的顶级定义。因此,您正在调用一个触发处理程序的函数,该函数调用将查找该事件的所有当前已注册的处理程序,其中没有,然后全部调用它们(其中没有)。然后,为该事件侦听器添加一个新的处理程序。此后的任何调用都将迭代处理程序列表(现在为1)并调用它们。