普通はイベントハンドラの登録順を調整すればこんなことをする必要はありませんし、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
で追加したイベントハンドラは対象外です。