2023年に泣きながらjQueryを触っているのですが、.trigger("click")
であるボタンのクリックイベントを動かして、このclickイベントが完了した後に処理を動かすということをしたかった。
結果から言うと.trigger()
に対して.promise()
でjQuery Promiseオブジェクトを返すようにし、.done()
を使用してPromiseの完了時に実行されるコールバック関数を登録するやり方で実現可能だった。
$(".foo").click("click", function() {
console.log("clicked");
});
$(".foo").trigger("click").promise().done(function() {
console.log("all handlers for click completed");
});
終わってみたらめちゃくちゃ簡単にスッキリ書けるようだった。
例では.foo
としているクラス名が複数あった場合にはPromise.all的な動きをしてくれたし、なかなか使う機会が多そうです。