0

请参阅以下内容:

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

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

});

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

此代码段返回:

done...

而如果我们颠倒顺序:

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

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

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

});

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

4

2 回答 2

2

如果你在森林里大喊大叫,然后我过来,我什么也听不见,对吗?

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

这是简单的物理:P

于 2013-02-01T19:41:01.007 回答
0

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

于 2013-02-01T19:42:32.240 回答