0

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

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

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 ) {
    ...
});

我真的希望它在函数的顶部触发。非常感谢任何帮助!

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

4

3 回答 3

1

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

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

于 2010-12-02T00:13:25.110 回答
1

它在异步回调中起作用的事实使我相信当 foo(); 被调用,实际的绑定还没有发生。执行此操作时,您需要注意事物的顺序。

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

于 2010-12-02T00:17:58.770 回答
0

以下作品...?

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

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


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

foo();
于 2010-12-02T00:13:00.890 回答