( Mire la última edición en esta respuesta si necesita usar .on()
elementos rellenados con JavaScript )
Use esto para elementos que no se completan con JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
tiene su propio controlador: http://api.jquery.com/hover/
Si desea hacer varias cosas, encadénelas en el .on()
controlador de la siguiente manera:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
De acuerdo con las respuestas proporcionadas a continuación se puede utilizar hover
con .on()
, pero:
Aunque se desaconseja encarecidamente el nuevo código, es posible que vea el pseudo-evento-nombre "hover" usado como una forma abreviada de la cadena "mouseenter mouseleave". Adjunta un único controlador de eventos para esos dos eventos, y el controlador debe examinar event.type para determinar si el evento es mouseenter o mouseleave. No confunda el nombre de pseudo-evento "hover" con el método .hover (), que acepta una o dos funciones.
Además, no hay ventajas de rendimiento al usarlo y es más voluminoso que solo usar mouseenter
o mouseleave
. La respuesta que proporcioné requiere menos código y es la forma correcta de lograr algo como esto.
EDITAR
Ha pasado un tiempo desde que se respondió esta pregunta y parece haber ganado algo de tracción. El código anterior sigue en pie, pero quería agregar algo a mi respuesta original.
Si bien prefiero usar mouseenter
y mouseleave
(me ayuda a comprender lo que está sucediendo en el código) con .on()
él, es igual que escribir lo siguientehover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Dado que la pregunta original hizo preguntan cómo podrían utilizar adecuadamente on()
con hover()
, pensé que iba a corregir el uso de on()
y no nos pareció necesario añadir el hover()
código en el momento.
EDITAR 11 DE DICIEMBRE DE 2012
Algunas nuevas respuestas proporcionadas a continuación detallan cómo .on()
debería funcionar si la div
pregunta en cuestión se completa con JavaScript. Por ejemplo, supongamos que llena un evento div
usando jQuery .load()
, de esta manera:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
El código anterior para .on()
no se mantendría. En cambio, debe modificar su código ligeramente, así:
$(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
Este código funcionará para un elemento poblado con JavaScript después de .load()
que haya ocurrido un evento. Simplemente cambie su argumento al selector apropiado.
mouseenter
ymouseleave
, como lo sugiere calebthebrewer.