¿Cómo verifico si el mouse está sobre un elemento en jQuery?
¿Existe alguna forma rápida y sencilla de hacer esto en jQuery que me falta?
No quiero usar el evento del mouseover porque ya lo estoy usando para otra cosa. Sólo necesito saber si el mouse está sobre un elemento en un momento dado.
Me gustaría hacer algo como esto, si tan solo hubiera una función "IsMouseOver":
function hideTip(oi) {
setTimeout(function() { if (!IsMouseOver(oi)) $(oi).fadeOut(); }, 100);
}
Una verificación de desplazamiento limpia y elegante:
if ($('#element:hover').length != 0) {
// do something ;)
}
Este código ilustra lo que happytime harry y yo intentamos decir. Cuando el mouse entra, sale una información sobre herramientas, cuando el mouse sale establece un retraso para que desaparezca. Si el mouse ingresa al mismo elemento antes de que se active el retraso, entonces destruimos el disparador antes de que suene usando los datos que almacenamos antes.
$("someelement").mouseenter(function(){
clearTimeout($(this).data('timeoutId'));
$(this).find(".tooltip").fadeIn("slow");
}).mouseleave(function(){
var someElement = $(this),
timeoutId = setTimeout(function(){
someElement.find(".tooltip").fadeOut("slow");
}, 650);
//set the timeoutId, allowing us to clear this trigger if the mouse comes back over
someElement.data('timeoutId', timeoutId);
});
ADVERTENCIA: is(':hover')
está en desuso en jquery 1.8+. Consulte esta publicación para encontrar una solución.
También puede usar esta respuesta: https://stackoverflow.com/a/6035278/8843 para probar si el mouse está sobre un elemento:
$('#test').click(function() {
if ($('#hello').is(':hover')) {
alert('hello');
}
});