这可能只是我自己对事件如何工作的无知,但有人可以解释一下:自定义事件不会触发函数的顶部,而是会触发该函数内部的回调。
以下作品(自定义事件触发):
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 ) {
...
});
我真的希望它在功能的顶部开启。非常感谢任何帮助!
注意:跨浏览器的问题是相同的,有或没有额外的数据参数。
答案 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();