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

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

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

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

笔记:无论是否有额外的数据参数,跨浏览器都存在同样的问题。

有帮助吗?

解决方案

它在异步回调中工作的事实让我相信当 foo();被调用,实际绑定尚未发生。执行此操作时,您需要注意事情的顺序。

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

其他提示

data 在您的第二个(非工作)方法中似乎是不确定的。

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

以下工作...?

我只绑定了“自定义”,我删除了其他两个(以使事情尽可能简单。)

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


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

foo();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top