自定义JQuery事件在一个地方但不是另一个地方发生

时间:2010-12-02 00:04:29

标签: javascript jquery events custom-events

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

以下作品(自定义事件触发):

function foo() {

    $.ajax( ... , function() {
            $.event.trigger("custom" , data );
    });

}

foo();

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

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

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

}

foo();

事件绑定如下:

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

我真的希望它在功能的顶部开启。非常感谢任何帮助!

注意:跨浏览器的问题是相同的,有或没有额外的数据参数。

3 个答案:

答案 0 :(得分:1)

data似乎未在您的第二个(非工作)方法中定义。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

以下作品......?

我只绑定了“自定义”,我删除了另外两个(为了让事情变得尽可能简单。)

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


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

foo();