( 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:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
memiliki penangannya sendiri: http://api.jquery.com/hover/
Jika Anda ingin melakukan banyak hal, rangkai dalam .on()
handler seperti:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
Menurut jawaban yang diberikan di bawah ini Anda dapat menggunakan hover
dengan .on()
, tetapi:
Meskipun sangat tidak disarankan untuk kode baru, Anda mungkin melihat pseudo-event-name "hover" digunakan sebagai singkatan untuk string "mouseenter mouseleave". Ini melampirkan pengendali acara tunggal untuk kedua acara tersebut, dan penangan harus memeriksa event.type untuk menentukan apakah acara tersebut adalah mouseenter atau mouseleave. Jangan bingung pseudo-event-name "hover" dengan metode .hover (), yang menerima satu atau dua fungsi.
Juga, tidak ada keuntungan kinerja untuk menggunakannya dan itu lebih besar daripada hanya menggunakan mouseenter
atau mouseleave
. 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
dan mouseleave
(membantu saya memahami apa yang terjadi dalam kode) dengan .on()
itu sama seperti menulis yang berikut denganhover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Karena pertanyaan awal memang bertanya bagaimana mereka dapat digunakan on()
dengan benar hover()
, saya pikir saya akan memperbaiki penggunaan on()
dan tidak merasa perlu menambahkan hover()
kode pada saat itu.
EDIT 11 DESEMBER 2012
Beberapa jawaban baru yang disediakan di bawah ini merinci bagaimana cara .on()
kerjanya jika div
pertanyaan tersebut diisi menggunakan JavaScript. Misalnya, katakanlah Anda mengisi acara div
menggunakan jQuery .load()
, seperti:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Kode di atas untuk .on()
tidak tahan. Sebagai gantinya, Anda harus sedikit memodifikasi kode Anda, seperti ini:
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
Kode ini akan berfungsi untuk elemen yang diisi dengan JavaScript setelah suatu .load()
peristiwa terjadi. Ubah saja argumen Anda ke pemilih yang sesuai.
mouseenter
danmouseleave
, seperti yang disarankan oleh calebthebrewer.