メインコンテンツへスキップ

triggerメソッドで動かしたclickイベントの完了を、jQueryのPromiseオブジェクトで検知する

·387 文字·1 分
develop javascript
称徳寺 涼雨
著者
称徳寺 涼雨
プリズムスタァ

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的な動きをしてくれたし、なかなか使う機会が多そうです。