リスナー定義内の JavaScript イベント リスナーの削除
リスナー定義内のイベント リスナーを削除しようとすると、JavaScript ユーザーは次のような問題に遭遇する可能性があります。コンテキストバインディング。この記事では、この問題を解決し、イベント リスナーを効果的に削除するアプローチを示します。
アプローチ 1: 名前付き関数を使用する
匿名関数の代わりに、名前付き関数を定義して割り当てます。イベントリスナーに。これにより、関数を後で削除するために参照できるようになります。
var click_count = 0; function myClick(event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', myClick); } } // Add the event listener canvas.addEventListener('click', myClick);
アプローチ 2: クリック カウンタ変数によるクロージャ
クロージャにより、リスナー関数が定義された変数にアクセスできるようになります。その範囲外です。この場合、関数内でクリック カウンタ変数をカプセル化します。
var myClick = (function (click_count) { var handler = function (event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', handler); } }; return handler; })(0); // Add the event listener canvas.addEventListener('click', myClick);
アプローチ 3: 関数の引数としてのクリック カウンタ
異なる要素に独自のクリック カウンタが必要な場合、クリック カウンタを引数として受け取る新しい関数を作成します。
var myClick = function (click_count) { var handler = function (event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', handler); } }; return handler; }; // Add the event listener canvas.addEventListener('click', myClick(0));
以上が定義内から JavaScript イベント リスナーを効果的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。