绑定之前的触发事件当然是没有效果的。
只有在附加了一些处理程序之后才应该触发它,否则不会触发任何内容。关于 ready 事件,jQuery 为此使用了一个延迟对象,即“readyList”对象。但是我很确定它对于您正在寻找的东西来说只是过大,无论如何这仍然会根据其他事件触发,DOMContentLoaded 或 onreadystatechange 或窗口对象的 onload 或如果这些事件已经完成,则使用超时手动解决。
那么为什么不绑定后触发事件呢,经典的方式:
$(document).on("myEvent", function(){ /**/ }).trigger('myEvent');
如果出于某种原因您想在特定情况下触发它,并且由于模糊的原因您无法修改 ajax 回调方法来检查某些条件,您仍然可以使用 ajaxStop() 处理程序,如下所示:
$(document).ajaxStop(function () {
if ($._data(document, 'events').myEvent) {
$(this).trigger('myEvent').off('ajaxStop'); //off() could be removed, depending your needs
}
});
演示
如果你想使用你的 ajax 方法返回的 promise 接口,使用类似的东西:
$.when($.get('myajax')).done(function(){$(document).trigger('myEvent')});
但实际上,你没有告诉我们你在寻找什么,也许你的逻辑在其他地方失败了,更好的方法应该是 IMO 可能的。