Javascript 自定义JQuery事件在一个位置触发,而不是在另一个位置触发

Javascript 自定义JQuery事件在一个位置触发,而不是在另一个位置触发,javascript,jquery,events,custom-events,Javascript,Jquery,Events,Custom Events,这可能只是我自己对事件如何工作的无知,但有人能解释一下:自定义事件不会在函数顶部触发,而是在函数内部的回调中触发 以下工作(自定义事件激发): 以下操作不起作用(自定义事件不触发): 事件绑定如下所示: $(document).bind("custom custom1 custom2" , function( event, data ) { ... }); 我真的希望它能在函数的顶部启动。非常感谢您的帮助 注意:在不同的浏览器中,无论是否有额外的数据参数,这都是相同的问题。以下方法有效

这可能只是我自己对事件如何工作的无知,但有人能解释一下:自定义事件不会在函数顶部触发,而是在函数内部的回调中触发

以下工作(自定义事件激发):

以下操作不起作用(自定义事件不触发):

事件绑定如下所示:

$(document).bind("custom custom1 custom2" , function( event, data ) {
    ...
});
我真的希望它能在函数的顶部启动。非常感谢您的帮助


注意:在不同的浏览器中,无论是否有额外的数据参数,这都是相同的问题。

以下方法有效

我只绑定了“custom”,甚至删除了另外两个(为了让事情尽可能简单)


数据
在第二个(非工作)方法中似乎未定义


当我定义
数据时
,它会按预期工作。

它在异步回调中工作的事实让我相信当foo()时;调用时,实际绑定尚未发生。当你这样做的时候,你需要注意事情的顺序


jwwishart的回答可能有效,因为他先绑定。。。然后打电话给福。如果您按照事情发生的顺序发布整个代码,尽管这可能更容易调试。

结尾被剪裁:…不同浏览器之间存在相同的问题,有没有额外的数据参数。是否可以在调用
foo()
后绑定处理程序?对不起,我应该更忠实于原始代码。数据总是在触发器之前定义的。但是当我一起删除数据参数时,我也遇到了同样的问题。很好。我看到了这一点,但我的注意力集中在获取一段简单的工作代码上,这样我就不会认为这可能是他的问题。是的。这么简单。我以为绑定在init中,但它在其他地方,在异步回调中。当我在同一个函数中将它移入和移出回调时,它始终工作/中断,这一事实让我感到不安。我真傻!感谢你和sje397以及所有花时间的人。
function foo() {
    $.event.trigger("custom" , data );

    $.ajax( ... , function() {
            ...
    });

}

foo();
$(document).bind("custom custom1 custom2" , function( event, data ) {
    ...
});
$(document).bind("custom" , function( event, data ) {
    alert(data);
});


function foo() {
    $.event.trigger("custom" , "Works" );
}

foo();