jQueryトリガーメソッドを使用してイベントを呼び出しています...しかし、動作に一貫性がありません。イベントを呼び出すこともあれば、呼び出さないこともあります。
<a href="#" onclick="
$(this).trigger('custom-event');
window.location.href = 'url';
return false;
">text</a>
にcustom-event
はたくさんのリスナーが追加されています。これは、トリガーメソッドが同期していないかのようでありwindow.location.href
、イベントを実行する前に変更することができます。また、window.location.hrefが変更されると、ナビゲーションが発生し、すべてが中断されます。
イベントを同期的にトリガーするにはどうすればよいですか?
jQuery1.8.1の使用。
編集
イベントが呼び出されると、次のようなスタックトレースが含まれることがわかりました。
- jQuery.fx.tick(jquery-1.8.1.js:9021)
- ティック(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)
(私は間違っていました...これは、私が呼び出していたイベントがその中にアニメーションを持ち、アニメーションの後にコールバック内で期待される関数を呼び出していたことを証明するだけです)trigger
これは、jQueryメソッドが非同期であることを証明しています。