Bagaimana cara melepaskan "hover" di jQuery?
Ini tidak bekerja:
$(this).unbind('hover');
javascript
jquery
zsharp
sumber
sumber
Jawaban:
$(this).unbind('mouseenter').unbind('mouseleave')
atau lebih ringkas (terima kasih @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
sumber
Sebenarnya, dokumentasi jQuery memiliki pendekatan yang lebih sederhana daripada contoh berantai yang ditunjukkan di atas (meskipun mereka akan bekerja dengan baik):
Mulai jQuery 1.7, Anda juga dapat menggunakan
$.on()
dan$.off()
untuk event binding, jadi untuk melepas event hover, Anda akan menggunakan yang lebih sederhana dan lebih rapi:Pseudo-event-name "hover" digunakan sebagai singkatan dari "mouseenter mouseleave" tetapi ditangani secara berbeda di versi jQuery sebelumnya; mengharuskan Anda untuk secara tegas menghapus setiap nama acara literal. Menggunakan
$.off()
sekarang memungkinkan Anda untuk melepaskan kedua kejadian mouse menggunakan singkatan yang sama.Edit 2016:
Masih merupakan pertanyaan yang populer sehingga perlu diperhatikan poin @ Dennis98 di komentar di bawah bahwa di jQuery 1.9+, acara "hover" sudah tidak digunakan lagi karena mendukung panggilan "mouseenter mouseleave" standar. Jadi, deklarasi pengikatan acara Anda sekarang akan terlihat seperti ini:
$('#myElement').off('mouseenter mouseleave');
sumber
$.off("hover")
tidak berfungsi. Namun, menggunakan kedua acara tersebut bekerja dengan baik.$.off()
masih ada, itu adalah metode yang disarankan untuk melepas peristiwa saat ini. Jadi mulai sekarang Anda perlu menulis$(element).off("mouseenter mouseleave");
.Lepaskan peristiwa
mouseenter
dan satumouseleave
per satu atau lepaskan semua peristiwa di elemen.atau
sumber
unbind () tidak berfungsi dengan kejadian sebaris hardcode.
Jadi, misalnya, jika Anda ingin melepaskan peristiwa gerakan mouse dari
<div id="some_div" onmouseover="do_something();">
, saya menemukan itu$('#some_div').attr('onmouseover','')
adalah cara cepat dan kotor untuk mencapainya.sumber
Solusi lain adalah .die () untuk acara yang dilampirkan dengan .live () .
Ex.:
Anda dapat menemukan referensi yang bagus di sini: Menjelajahi jQuery .live () dan .die ()
(Maaf untuk bahasa Inggris saya: ">)
sumber
Semua hover yang dilakukan di belakang layar mengikat properti mouseover dan mouseout. Saya akan mengikat dan melepaskan fungsi Anda dari acara tersebut satu per satu.
Misalnya, Anda memiliki html berikut:
maka jQuery Anda akan menjadi:
sumber
Anda dapat menghapus penanganan kejadian tertentu yang dilampirkan oleh
on
, menggunakanoff
Dengan menggunakan ini, Anda hanya akan menghapus handlerFunction
. Praktik baik lainnya, adalah menyetel nameSpace untuk beberapa peristiwa yang dilampirkan
sumber
Saya menemukan ini berfungsi sebagai argumen kedua (fungsi) ke .hover ()
Fungsi pertama (argumen ke .hover ()) adalah gerakan mouse dan akan mengeksekusi kode Anda. Argumen kedua adalah mouseout yang akan melepaskan peristiwa hover dari #yourId. Kode Anda hanya akan dieksekusi sekali.
sumber
$.unbind()
dengan sendirinya seperti ini menghapus semua kejadian dari objek itu? Dalam hal mana$.click()
acara Anda sekarang akan gagal, bukan?