ホームページ > ウェブフロントエンド > jsチュートリアル > 定義内から JavaScript イベント リスナーを効果的に削除するにはどうすればよいですか?

定義内から JavaScript イベント リスナーを効果的に削除するにはどうすればよいですか?

DDD
リリース: 2024-12-08 19:45:11
オリジナル
525 人が閲覧しました

How to Effectively Remove JavaScript Event Listeners from Within Their Definitions?

リスナー定義内の 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート