jQuery disparar evento personalizado de forma síncrona?
Eu estou usando o método de disparo do jQuery para chamar um evento ... mas ele se comporta de maneira inconsistente. Às vezes chama o evento, às vezes não.
<a href="#" onclick="
$(this).trigger('custom-event');
window.location.href = 'url';
return false;
">text</a>
ocustom-event
tem muitos ouvintes adicionados a ele. É como se o método do gatilho não fosse síncrono, permitindo que owindow.location.href
ser alterado antes de executar os eventos. E quando window.location.href é alterado, ocorre uma navegação, interrompendo tudo.
Como posso acionar eventos de forma síncrona?
Usando jQuery 1.8.1.
Obrigado!
EDITAR
Eu descobri que o evento, quando chamado, tem um rastreio de pilha como este:
jQuery.fx.tick (jquery-1.8.1.js: 9021)tick (jquery-1.8.1.js: 8499)jQuery.Callbacks.self.fireWith (jquery-1.8.1.js: 1082)jQuery.Callbacks.fire (jquery-1.8.1.js: 974)jQuery.speed.opt.complete (jquery-1.8.1.js: 8991)$ .customEvent (myfile.js: 28)Isso prova que jQuerytrigger
método é assíncrono. (Eu estava errado ... isso só prova que o evento que eu estava chamando tinha uma animação dentro dele e estava chamando a função esperada dentro do retorno de chamada após a animação)