( Guarda l'ultima modifica in questa risposta se hai bisogno di usare .on()
con elementi popolati con JavaScript )
Usalo per elementi che non sono popolati usando JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
ha il suo gestore: http://api.jquery.com/hover/
Se vuoi fare più cose, incatenali nel .on()
gestore in questo modo:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
In base alle risposte fornite di seguito è possibile utilizzare hover
con .on()
, ma:
Sebbene fortemente scoraggiato per il nuovo codice, potresti vedere lo pseudo-nome-evento "hover" usato come una scorciatoia per la stringa "mouseenter mouseleave". Allega un singolo gestore eventi per questi due eventi e il gestore deve esaminare event.type per determinare se l'evento è mouseenter o mouseleave. Non confondere lo pseudo-evento-nome "hover" con il metodo .hover (), che accetta una o due funzioni.
Inoltre, non ci sono vantaggi prestazionali nell'usarlo ed è più voluminoso del semplice utilizzo di mouseenter
o mouseleave
. La risposta che ho fornito richiede meno codice ed è il modo corretto per ottenere qualcosa del genere.
MODIFICARE
È passato un po 'di tempo da quando è stata data una risposta a questa domanda e sembra aver guadagnato una certa trazione. Il codice sopra riportato rimane valido, ma volevo aggiungere qualcosa alla mia risposta originale.
Mentre preferisco usare mouseenter
e mouseleave
(mi aiuta a capire cosa sta succedendo nel codice) con .on()
esso è lo stesso di scrivere quanto segue conhover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Dal momento che la domanda iniziale ha chiesto come avrebbero potuto usare correttamente on()
con hover()
, ho pensato di correggere l'uso di on()
e non ha trovato necessario aggiungere il hover()
codice al momento.
MODIFICA 11 DICEMBRE 2012
Alcune nuove risposte fornite di seguito in dettaglio come .on()
dovrebbero funzionare se la div
domanda in questione viene popolata utilizzando JavaScript. Ad esempio, supponiamo di popolare un evento div
usando jQuery .load()
, in questo modo:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Il codice sopra per .on()
non reggerebbe. Invece, dovresti modificare leggermente il tuo codice, in questo modo:
$(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
Questo codice funzionerà per un elemento popolato con JavaScript dopo che .load()
si è verificato un evento. Basta cambiare argomento per il selettore appropriato.
mouseenter
emouseleave
, come suggerito da Calebthebrewer.