Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengalih Keluar Pendengar Acara JavaScript dari Dalam Takrifan Mereka Sendiri?

Bagaimanakah Saya Boleh Mengalih Keluar Pendengar Acara JavaScript dari Dalam Takrifan Mereka Sendiri?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 17:58:11799semak imbas

How Can I Remove JavaScript Event Listeners from Within Their Own Definitions?

Mengalih keluar Pendengar Acara JavaScript Dalam Takrifan Mereka

Apabila bekerja dengan pendengar acara dalam JavaScript, mungkin terdapat senario di mana anda perlu mengalih keluar pendengar dari dalam definisi pendengar lain. Keadaan ini boleh timbul apabila syarat tertentu dipenuhi, seperti mencapai kiraan klik tertentu.

Penyelesaian:

Untuk mengalih keluar pendengar acara dalam definisinya sendiri, anda boleh menggunakan fungsi yang dinamakan. Daripada memberikan fungsi tanpa nama kepada kaedah addEventListener(), buat fungsi bernama dan hantarkannya sebagai argumen kedua.

var click_count = 0;

function myClick(event) {
  click_count++;
  if (click_count == 50) {
    canvas.removeEventListener('click', myClick);
  }
}

canvas.addEventListener('click', myClick);

Dalam contoh ini, myClick ialah fungsi bernama yang diberikan kepada kaedah addEventListener() . Apabila peristiwa klik dicetuskan, fungsi myClick menambah pembolehubah click_count. Jika kiraan mencecah 50, pendengar akan dialih keluar menggunakan removeEventListener().

Pendekatan Alternatif:

Jika anda perlu menggunakan fungsi tanpa nama atau menutup sekitar kaunter klik pembolehubah, anda boleh membuat penutupan. Penutupan membenarkan fungsi dalaman mengakses pembolehubah dari skop luarnya, walaupun selepas fungsi luar selesai dilaksanakan.

var myClick = (function(click_count) {
  var handler = function(event) {
    click_count++;
    if (click_count == 50) {
      canvas.removeEventListener('click', handler);
    }
  };
  return handler;
})(0);

canvas.addEventListener('click', myClick);

Di sini, fungsi myClick mencipta penutupan dalaman yang merangkumi fungsi pengendali dan pembolehubah click_count .

Berbilang Pendengar:

Jika anda perlu menambah berbilang pendengar dengan pembilang mereka sendiri, anda boleh mencipta fungsi tertib lebih tinggi yang menjana fungsi baharu dengan pembilangnya sendiri.

var myClick = function(click_count) {
  var handler = function(event) {
    click_count++;
    if (click_count == 50) {
      canvas.removeEventListener('click', handler);
    }
  };
  return handler;
};

canvas.addEventListener('click', myClick(0));

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalih Keluar Pendengar Acara JavaScript dari Dalam Takrifan Mereka Sendiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn