我有以下jquery ajax调用:
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data, textStatus, jqXHR) {
// Without setTimeout, the triggerHandler doesn't work
setTimeout(function (e) {
$(this).triggerHandler($.Event("CustomEvent"));
});
}
});
在另一个地方:
$(this).on('CustomEvent', function (evt) {
alert("CustomEvent");
});
以上代码显示警告。但是,如果我没有在 setTimeout 中包含 triggerHandler ,则永远不会调用.on,也不会显示警告。任何想法为什么setTimeout似乎是必要的工作?
答案 0 :(得分:0)
原因是"这个"并不总是"这"。
如果setTimeout
方法有效,您的活动就在$(window)
上,所以这应该有效:
success: function (data, textStatus, jqXHR) {
$(window).triggerHandler("CustomEvent");
}
顺便说一句,没有必要创建一个jQuery-Event-object。