Rumah > hujung hadapan web > tutorial js > Bagaimana untuk mengalih keluar Semua Pengendali Acara daripada Objek DOM dalam JavaScript?

Bagaimana untuk mengalih keluar Semua Pengendali Acara daripada Objek DOM dalam JavaScript?

DDD
Lepaskan: 2024-10-25 04:59:29
asal
1019 orang telah melayarinya

How to Remove All Event Handlers from a DOM Object in JavaScript?

Javascript/DOM: Menghapuskan Semua Pengendali Acara daripada Objek DOM

Soalan:

Bagaimanakah kita boleh mengalih keluar semua sepenuhnya peristiwa yang dikaitkan dengan objek DOM, seperti div?

Penyelesaian Masalah:

Dalam kes anda, anda menambahkan acara pada div menggunakan addEventListener dengan tersuai function, eventReturner(), yang mengembalikan fungsi wrapper. Ini mencipta pendengar acara yang unik setiap kali.

Penyelesaian:

Terdapat dua pendekatan utama untuk mengalih keluar semua pengendali acara daripada objek DOM:

1 . Mengklonkan Elemen

Pendekatan ini mengekalkan atribut dan anak tetapi tidak mengekalkan sebarang perubahan pada sifat DOM.

<code class="javascript">var clone = element.cloneNode(true);</code>
Salin selepas log masuk

2. Mengalih keluar Pengendali Acara Tertentu

Pengendali Acara Tanpa Nama:

Fungsi tanpa nama yang digunakan sebagai pengendali acara mencipta pendengar baharu berulang kali. RemoveEventListener tidak mempunyai kesan ke atas mereka. Untuk menangani perkara ini:

  • Gunakan pengendali fungsi secara langsung tanpa membalutnya.
  • Buat fungsi pembalut untuk addEventListener yang menjejaki fungsi yang dikembalikan dan menyokong removeAllEvents.

Contoh Pembungkus:

<code class="javascript">var _eventHandlers = {}; // Global reference

const addListener = (node, event, handler, capture = false) => {
  if (!(event in _eventHandlers)) {
    _eventHandlers[event] = [];
  }
  _eventHandlers[event].push({ node, handler, capture });
  node.addEventListener(event, handler, capture);
};

const removeAllListeners = (targetNode, event) => {
  _eventHandlers[event] = _eventHandlers[event].filter(({ node }) => node !== targetNode);
  targetNode.removeEventListener(event, handler, capture);
};</code>
Salin selepas log masuk

Penggunaan:

<code class="javascript">addListener(div, 'click', eventReturner(), false);

// To remove the event listeners:
removeAllListeners(div, 'click');</code>
Salin selepas log masuk

Nota: Jika kod anda dijalankan untuk tempoh lanjutan dan melibatkan mencipta dan mengalih keluar banyak elemen, pastikan anda mengalih keluar sebarang rujukan kepada elemen tersebut daripada _eventHandlers.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Semua Pengendali Acara daripada Objek DOM dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan