Cara Menggunakan addEventListener
untuk Klik di Luar Elemen di JavaScript
Dalam pengembangan web, terkadang kita membutuhkan fungsionalitas untuk menjalankan kode ketika pengguna mengklik di luar suatu elemen tertentu. Misalnya, menutup dropdown menu atau modal ketika pengguna mengklik di luar area tersebut.
JavaScript menyediakan cara mudah untuk mencapai hal ini menggunakan addEventListener
dan EventTarget.contains()
.
Langkah-langkah:
- Identifikasi Elemen Target: Tentukan elemen HTML yang akan menjadi target dari event klik di luar.
- Tambahkan
addEventListener
kedocument
: GunakanaddEventListener
pada objekdocument
untuk mendeteksi setiap klik pada halaman. - Gunakan
EventTarget.contains()
: Dalam handler event, periksa apakah target klik merupakan elemen target atau berada di dalam elemen target menggunakanEventTarget.contains()
. - Jalankan Kode: Jika target klik bukan bagian dari elemen target, jalankan kode yang ingin Anda eksekusi.
Contoh:
const dropdownMenu = document.getElementById('myDropdown');
document.addEventListener('click', (event) => {
if (!dropdownMenu.contains(event.target)) {
// Tutup dropdown menu
dropdownMenu.classList.remove('show');
}
});
Kode di atas akan menutup dropdown menu myDropdown
ketika pengguna mengklik di luar area dropdown menu.
Penjelasan:
document.addEventListener('click', ...)
: Menambahkan event listener untuk event "click" pada objekdocument
.event.target
: Mengacu pada elemen HTML yang diklik oleh pengguna.!dropdownMenu.contains(event.target)
: Memeriksa apakah elemen target klik bukan bagian darimyDropdown
.dropdownMenu.classList.remove('show')
: Menghapus classshow
darimyDropdown
, yang mungkin digunakan untuk menampilkan dropdown menu.
Penting:
- Pastikan untuk menggunakan event listener yang tepat untuk skenario Anda.
- Hindari menggunakan
event.stopPropagation()
untuk mencegah event "click" dipropagasikan ke elemen induk, karena dapat memengaruhi fungsionalitas lainnya.
Kesimpulan:
Dengan menggunakan addEventListener
dan EventTarget.contains()
, kita dapat dengan mudah mendeteksi klik di luar elemen tertentu dan menjalankan kode yang diperlukan. Hal ini memungkinkan kita untuk membangun antarmuka web yang lebih interaktif dan responsif.