Soalan:
Adakah mungkin untuk mengalih keluar semua pendengar acara yang dilampirkan pada Elemen DOM, seperti div?
Jawapan:
Memahami soalan anda, terdapat pelbagai cara untuk mencapai ini bergantung pada keperluan anda.
Mengalih Keluar Semua Pengendali Acara
Untuk mengalih keluar semua pengendali acara, tanpa mengira jenis, anda boleh mengklon elemen dan menggantikannya dengan klon.
var clone = element.cloneNode(true);
Nota: Pengklonan mengekalkan atribut dan anak, tetapi bukan perubahan sifat DOM.
Mengalih keluar Jenis Acara Tertentu
Pengendali Acara Tanpa Nama
Jika anda telah menambah pengendali acara tanpa nama (setara fungsinya dengan menghantar fungsi sebagai panggilan balik kepada addEventListener), anda akan menghadapi masalah dengan removeEventListener. Ini kerana fungsi tanpa nama mencipta objek baharu setiap kali ia dipanggil, menjadikannya mustahil untuk mengalih keluarnya secara khusus.
Penyelesaian:
Pengendali Acara Bukan Tanpa Nama
Jika pengendali acara anda bukan tanpa nama, anda boleh menggunakan removeEventListener seperti yang diharapkan. Walau bagaimanapun, anda perlu memastikan bahawa anda menghantar rujukan objek yang sama kepada removeEventListener yang anda gunakan untuk menambah pendengar.
Contoh:
function eventHandler() {} div.addEventListener('click', eventHandler); ... div.removeEventListener('click', eventHandler);
Perlu diingat bahawa jika kod anda kerap mencipta dan mengalih keluar elemen, anda mungkin perlu mengurus rujukan yang disimpan dalam fungsi pembalut pengendalian acara (_eventHandlers dalam contoh yang disediakan) untuk mengelakkan kebocoran memori.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Semua Pendengar Acara daripada Elemen DOM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!