LoginSignup
4
6

More than 5 years have passed since last update.

jQuery のイベントハンドラの順番を入れ替える

Posted at

普通はイベントハンドラの登録順を調整すればこんなことをする必要はありませんし、jQuery の内部用 API を使うので将来動かなくなるかもしれません。(ライブラリが作る DOM 要素に、そのライブラリが登録するイベントハンドラより前に処理を挟みたくてしょうがなくやっています・・・。)

jQuery のプライベートなデータは $._data() で取得できるのですが、この中に jQuery 経由で登録されたイベントハンドラも入っています。

例えば elem という DOM 要素の paste イベントで「一番最初に実行される」ハンドラを追加したい場合は・・・

// まずは末尾にハンドラを追加。
$(elem).on('paste', (e) => {
  // Do something...
});

// 末尾のもの(↑で追加したやつ)を先頭に!
const handlers = $._data(elem).events.paste;
handlers.unshift(handlers.pop());

ちなみに jQuery を介さず addEventListener で追加したイベントハンドラは対象外です。

4
6
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6