Jawaban:
Peristiwa mouseleave berbeda dari mouseout dalam cara menangani peristiwa menggelegak. Jika mouseout digunakan dalam contoh ini, maka saat penunjuk mouse dipindahkan dari elemen Dalam, penangan akan terpicu. Ini biasanya merupakan perilaku yang tidak diinginkan. Sebaliknya, peristiwa mouseleave, hanya memicu penangannya saat mouse meninggalkan elemen yang terikat padanya, bukan turunannya. Jadi dalam contoh ini, penangan dipicu saat mouse meninggalkan elemen Luar, tetapi bukan elemen Dalam.
Ada saat-saat ketika mouseout
ada pilihan yang lebih baik daripada mouseleave
.
Misalnya, Anda telah membuat keterangan alat yang ingin Anda tampilkan di sebelah elemen mouseenter
. Anda gunakan setTimeout
untuk mencegah tooltip muncul secara instan. Anda menghapus batas waktu saat mouseleave
menggunakan clearTimeout
jadi jika mouse meninggalkan tooltip tidak akan ditampilkan. Ini akan berhasil 99% dari waktu.
Tapi sekarang katakanlah elemen Anda memiliki tooltip yang dilampirkan adalah tombol dengan click
kejadian, dan mari kita asumsikan juga tombol ini meminta pengguna dengan kotak confirm
atau alert
. Pengguna mengklik tombol dan alert
kebakaran. Pengguna menekannya cukup cepat sehingga tooltip Anda tidak memiliki kesempatan untuk muncul (sejauh ini bagus).
Pengguna menekan alert
tombol OK kotak, dan mouse meninggalkan elemen. Tetapi karena halaman browser sekarang dalam keadaan terkunci, tidak ada javascript yang akan aktif sampai tombol OK ditekan, artinya mouseleave
acara Anda TIDAK AKAN FIRE . Setelah pengguna menekan OK, tooltip akan muncul (bukan yang Anda inginkan).
Menggunakan mouseout
dalam kasus ini akan menjadi solusi yang tepat karena akan menembak.
mouseout
dalam kasus itu akan menembak? Bukankah browser masih dalam keadaan terkunci mouseout
?
Dokumen jQuery API:
mouseout
Jenis acara ini dapat menyebabkan banyak sakit kepala karena acara menggelegak. Misalnya, saat penunjuk mouse bergerak keluar dari elemen Dalam dalam contoh ini, peristiwa mouseout akan dikirim ke sana, lalu menetes ke Luar. Ini dapat memicu penangan mouseout terikat pada waktu yang tidak tepat. Lihat pembahasan untuk .mouseleave () untuk alternatif yang berguna.
Begitu mouseleave
juga acara khusus, yang dirancang karena alasan di atas.
Mouseout Peristiwa akan memicu saat mouse meninggalkan elemen yang dipilih dan juga saat mouse meninggalkan elemen turunannya juga.
Elemen Event Mouseleave akan terpicu ketika pointer akan meninggalkan elemen yang dipilih saja.
Referensi: W3School