自定义 JQuery 事件在一个地方触发,但不在另一个地方触发
-
30-09-2019 - |
题
这可能只是我自己对事件如何运作的无知,但有人可以解释一下:自定义事件不会在函数顶部触发,但会在该函数内部的回调中触发。
以下工作(自定义事件触发):
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();
不隶属于 StackOverflow