Tampaknya masalah yang sangat lurus ke depan tetapi saya tidak dapat menemukan cara yang tepat untuk menyelesaikan ini. Bagaimana saya dapat memiliki satu kelas master yang menonaktifkan semua acara klik untuk elemen ini. Katakanlah aku ...

1
Vizious Developer 5 April 2021, 23:17

1 menjawab

Jawaban Terbaik

Salah satu masalah besar adalah bahwa jQuery hanya menempel dan mendengarkan Events . Jika Anda melampirkan pendengar ke dokumen, itu hanya akan berjalan setelah semua pendengar menengah (antara elemen yang diklik dan dokumen) telah dipecat.

Saya akan menggunakan vanilla js sebagai gantinya, sehingga Anda dapat melampirkan pendengar dalam fase penangkapan, sebelum acara menangkap ke target. Kemudian stopPropagation akan mencegah peristiwa mencapai target di tempat pertama.

document.addEventListener(
  'click',
  (e) => {
    if (e.target.closest('.btn-disabled')) {
      e.stopPropagation();
    }
  },
  true // attach in capturing phase
);

Jika Anda melakukan ini, Anda kemudian dapat menambahkan pendengar karena Anda ingin tombol apa pun (atau bahkan ke dokumen) menggunakan jQuery - dan tombollik tombol apa pun yang memiliki kelas btn-disabled (atau elemen leluhur dengan {{ X1}} Kelas) tidak akan memiliki pemadam klik mereka, terlepas dari apakah pendengar terpasang pada tombol atau elemen induk.

1
CertainPerformance 5 April 2021, 20:23