Bagaimana untuk mengesan klik elemen luar?
P粉113938880
2023-08-23 13:37:35
<p>Saya mempunyai beberapa menu HTML yang saya paparkan sepenuhnya apabila pengguna mengklik pada pengepala menu ini. Saya mahu menyembunyikan elemen ini apabila pengguna mengklik di luar kawasan menu. </p>
<p>Adakah ini mungkin menggunakan jQuery? </p>
<pre class="brush:php;toolbar:false;">$("#menuscontainer").clickOutsideThisElement(function() {
// Sembunyikan menu
});</pre>
<p><br /></p>
Anda boleh mendengar
document
上的 click 事件,然后确保#menucontainer
不是被单击元素的祖先或目标通过使用.closest()
.Jika tidak, elemen yang diklik berada di luar
#menucontainer
dan anda boleh menyembunyikannya dengan selamat.Sunting – 23 Jun 2017
Anda juga boleh membersihkan selepas pendengar acara jika anda bercadang untuk menutup menu dan ingin berhenti mendengar acara. Fungsi ini hanya akan membersihkan pendengar yang baru dibuat, meninggalkan mana-mana pendengar klik lain pada
document
. Menggunakan sintaks ES2015:Sunting – 3 November 2018
Untuk mereka yang tidak mahu menggunakan jQuery. Ini ialah kod vanillaJS (ECMAScript6) biasa di atas.
Nota: Ini berdasarkan komen Alex, hanya menggunakan
!element.contains(event.target)
dan bukannya bahagian jQuery.Tetapi
element.closest()
kini juga berfungsi dalam semua pelayar utama (versi W3C berbeza sedikit daripada versi jQuery). Polyfill boleh didapati di sini: Element.closest()Edit – 2020-05-21
Jika anda mahu pengguna boleh mengklik dan menyeret ke dalam elemen dan kemudian lepaskan tetikus di luar elemen tanpa menutup elemen:
dalam
outsideClickListener
:Lampirkan acara klik pada badan dokumen tetingkap tertutup. Lampirkan acara klik berasingan pada bekas untuk menghentikan penyebaran ke badan dokumen.