現代の主要ブラウザにおいて、Javascriptで一度だけ一度だけイベントを実行するのにremoveEventListenerもフラグも必要ありません。とても素晴らしいオプションが用意されているので、刮目しましょう。
すばらしき{once: true}
第3引数に{once: true}を追加するだけで一度だけイベントを実行してくれます。すばらしい。
window.addEventListener('scroll', () => {
}, {once: true})
jQueryの場合
jQueryの場合はoneメソッドが用意されています。
$(window).one('scroll', () => {
})
{once: true} のブラウザの対応状況
{once: true} は主要ブラウザですでに対応されているようです。
参考:“once” event listener option” | Can I use…
IE対応が必要な場合
IE対応が必要な場合は仕方ないので、removeEventListenerを使いましょう。
IE9以上で対応しているようです。
参考:“removeEventListener” | Can I use…
window.addEventListener('scroll', hoge = () => {
// removeEventListener実行前に何かしらの処理を行う
this.removeEventListener('scroll', hoge)
})
以上、一度実行されたら破棄されるイベントの書き方でした。