Mig*_*elo 11 jquery sync javascript-events
我使用jQuery触发器方法来调用事件......但它的行为不一致.有时它会调用事件,有时则不会.
<a href="#" onclick="
    $(this).trigger('custom-event');
    window.location.href = 'url';
    return false;
">text</a>
在custom-event有很多添加到它的听众.就好像触发方法不同步,允许window.location.href在执行事件之前进行更改.当window.location.href被更改时,会发生导航,中断所有内容.
如何同步触发事件?
使用jQuery 1.8.1.
谢谢!
编辑
我发现事件被调用时有一个像这样的堆栈跟踪:
这证明jQuery (我错了......这只证明我正在调用的事件,里面有动画,并且在动画后调用回调中的预期函数)trigger方法是异步的.
Tre*_*ent 23
你,我的朋友,正在寻找jQuery"when".
http://api.jquery.com/jQuery.when/
要强制任何同步,你可以使用这样的东西....
$.when($(this).trigger('custom-event')).done(function(){
    window.location.href = 'url';
});
阅读有关triggerHandler的文档:
.triggerHandler()不返回jQuery对象(允许链接),而是返回它导致执行的最后一个处理程序返回的任何值.如果没有重新触发处理程序,则返回undefined
文档中的这一点让我认为像这样的代码:
// Trigger the custom event
$(this).triggerHandler('custom-event');
// This code will only run when all events are run
window.location.href = 'url';
会满足你的要求.
见http://api.jquery.com/triggerHandler/