Saya punya <ul>
yang diisi dengan javascript setelah memuat halaman awal. Saat ini saya menggunakan .bind
dengan mouseover
dan mouseout
.
Proyek ini baru saja diperbarui ke jQuery 1.7 jadi saya memiliki opsi untuk digunakan .on
, tetapi sepertinya saya tidak bisa menggunakannya hover
. Apakah mungkin untuk menggunakan .on
dengan hover
?
EDIT : Elemen yang saya ikat dimuat dengan javascript setelah dokumen dimuat. Itu sebabnya saya menggunakan on
dan bukan hanya hover
.
mouseenter
danmouseleave
, seperti yang disarankan oleh calebthebrewer.Jawaban:
( Lihatlah hasil edit terakhir dalam jawaban ini jika Anda perlu menggunakan
.on()
elemen yang diisi dengan JavaScript )Gunakan ini untuk elemen yang tidak diisi menggunakan JavaScript:
.hover()
memiliki penangannya sendiri: http://api.jquery.com/hover/Jika Anda ingin melakukan banyak hal, rangkai dalam
.on()
handler seperti:Menurut jawaban yang diberikan di bawah ini Anda dapat menggunakan
hover
dengan.on()
, tetapi:Juga, tidak ada keuntungan kinerja untuk menggunakannya dan itu lebih besar daripada hanya menggunakan
mouseenter
ataumouseleave
. Jawaban yang saya berikan membutuhkan lebih sedikit kode dan merupakan cara yang tepat untuk mencapai sesuatu seperti ini.EDIT
Sudah lama sejak pertanyaan ini dijawab dan tampaknya telah mendapatkan beberapa daya tarik. Kode di atas masih berdiri, tetapi saya ingin menambahkan sesuatu ke jawaban asli saya.
Sementara saya lebih suka menggunakan
mouseenter
danmouseleave
(membantu saya memahami apa yang terjadi dalam kode) dengan.on()
itu sama seperti menulis yang berikut denganhover()
Karena pertanyaan awal memang bertanya bagaimana mereka dapat digunakan
on()
dengan benarhover()
, saya pikir saya akan memperbaiki penggunaanon()
dan tidak merasa perlu menambahkanhover()
kode pada saat itu.EDIT 11 DESEMBER 2012
Beberapa jawaban baru yang disediakan di bawah ini merinci bagaimana cara
.on()
kerjanya jikadiv
pertanyaan tersebut diisi menggunakan JavaScript. Misalnya, katakanlah Anda mengisi acaradiv
menggunakan jQuery.load()
, seperti:Kode di atas untuk
.on()
tidak tahan. Sebagai gantinya, Anda harus sedikit memodifikasi kode Anda, seperti ini:Kode ini akan berfungsi untuk elemen yang diisi dengan JavaScript setelah suatu
.load()
peristiwa terjadi. Ubah saja argumen Anda ke pemilih yang sesuai.sumber
.on()
solusi Anda bekerja dengan menghapus acara pseudo hover dan menggunakan yang asli. Saya suka yang pertama yang Anda ilustrasikan dengan mouseenter / mouseleave +1 untuk ituTak satu pun dari solusi ini yang berfungsi untuk saya ketika mousing atas / keluar dari objek yang dibuat setelah dokumen dimuat sebagai permintaan pertanyaan. Saya tahu pertanyaan ini sudah lama tetapi saya punya solusi untuk mereka yang masih mencari:
Ini akan mengikat fungsi ke pemilih sehingga objek dengan pemilih ini dibuat setelah dokumen siap masih dapat memanggilnya.
sumber
mouseover
danmouseout
peristiwa di sini akan menyebabkan kode terus menyala saat pengguna menggerakkan mouse di dalam elemen. Saya pikirmouseenter
danmouseleave
lebih tepat karena hanya akan menyala sekali saat masuk.Saya tidak yakin seperti apa sisa Javascript Anda, jadi saya tidak akan tahu apakah ada gangguan. Tapi
.hover()
berfungsi dengan baik sebagai acara bersama.on()
.Jika Anda ingin dapat memanfaatkan acara, gunakan objek yang dikembalikan dari acara:
http://jsfiddle.net/hmUPP/2/
sumber
$('#id').hover(function(){ //on }, function(){ //off});
.on()
denganhover
ketika Anda dapat dengan mudah menyingkirkan.on()
dan menggantinya dengan.hover()
fungsi dan mendapatkan hasil yang sama. Bukankah jQuery tentang menulis lebih sedikit kode ??mouseenter
danmouseleave
fungsi dengan.on()
hover
dukungan acara diOn()
sudah ditinggalkan di jQuery 1.8, dan dihapus di jQuery 1.9.Fungsi jQuery hover memberikan fungsionalitas mouseover dan mouseout.
$ (selector) .hover (inFunction, outFunction);
Sumber: http://www.w3schools.com/jquery/event_hover.asp
sumber
Hanya berselancar dari web dan merasa saya bisa berkontribusi. Saya perhatikan bahwa dengan kode di atas yang diposting oleh @calethebrewer dapat mengakibatkan beberapa panggilan melalui pemilih dan perilaku tak terduga misalnya: -
Biola ini http://jsfiddle.net/TWskH/12/ mengilustrasikan poin saya. Ketika menghidupkan elemen seperti di plugin saya telah menemukan bahwa beberapa pemicu ini menghasilkan perilaku yang tidak diinginkan yang dapat mengakibatkan animasi atau kode dipanggil lebih dari yang diperlukan.
Saran saya adalah cukup ganti dengan mouseenter / mouseleave: -
Meskipun ini mencegah beberapa kali animasi saya tidak dipanggil, saya akhirnya pergi dengan mouseover / mouseleave karena saya perlu menentukan kapan anak-anak dari orang tua sedang dibawa.
sumber
Anda dapat menggunakannya
.on()
denganhover
melakukan apa yang dikatakan bagian Catatan Tambahan:Itu akan dilakukan sebagai berikut:
EDIT (catatan untuk pengguna jQuery 1.8+):
sumber
mouseenter
danmouseleave
... Saya tahu, ini tidak menjawab pertanyaan asli OP, tapi tetap saja, menggunakanhover
dengan cara ini, tidak bijaksana..hover()
.mouseenter
danmouseleave
bukan hanya membuatnya bekerjahover
. Jika tidak ada alasan nyata untuk menggunakanhover
alasan kinerja, mengapa menggunakannya ketika sangat tidak disarankan untuk kode baru?hover
dukungan acara diOn()
sudah ditinggalkan di jQuery 1.8, dan dihapus di jQuery 1.9.sumber
Anda dapat memberikan satu atau beberapa jenis acara yang dipisahkan oleh spasi.
Begitu
hover
samamouseenter mouseleave
.Ini pendapat saya:
sumber
Jika Anda membutuhkannya sebagai kondisi di acara lain, saya menyelesaikannya dengan cara ini:
Kemudian di acara lain, Anda dapat dengan mudah menggunakannya:
(Saya melihat ada gunanya
is(':hover')
untuk menyelesaikan ini. Tapi ini bukan (belum) pemilih jQuery yang valid dan tidak bekerja di semua browser yang kompatibel)sumber
Plugin jQuery hoverIntent http://cherne.net/brian/resources/jquery.hoverIntent.html melangkah lebih jauh daripada pendekatan naif yang tercantum di sini. Meskipun mereka pasti bekerja, mereka mungkin tidak perlu berperilaku seperti yang diharapkan pengguna.
Alasan terkuat untuk menggunakan hoverIntent adalah batas waktu fitur . Ini memungkinkan Anda untuk melakukan hal-hal seperti mencegah menu dari penutupan karena pengguna menyeret mouse mereka sedikit terlalu jauh ke kanan atau kiri sebelum mereka mengklik item yang mereka inginkan. Ini juga menyediakan kemampuan untuk tidak mengaktifkan acara melayang dalam rentetan dan menunggu untuk fokus melayang.
Contoh penggunaan:
Penjelasan lebih lanjut tentang ini dapat ditemukan di https://stackoverflow.com/a/1089381/37055
sumber