2011-11-04 6 views

Respuesta

13

:hover es un CSS pseudo-class , no un selector jQuery. No se puede usar confiablemente con is() en todos los navegadores.

+1

así ¿cómo i comprobar es puntero del ratón sobre un elemento o no –

+0

el enlace en Connell de un swer es bastante útil. –

+1

Me permito diferir: http://jsfiddle.net/cSCF7/1/ –

6

Como dijo Frederic, :hover es parte de CSS y no es un selector en jQuery.

Para una solución alternativa, lea How do I check if the mouse is over an element in jQuery?

Establecer un tiempo de espera en la mouseout a Fadeout y almacenar el valor de retorno a datos en el objeto. Luego onmouseover, cancele el tiempo de espera si hay un valor de en los datos.

Elimina los datos en la devolución de llamada del fadeout.

1

¿por qué no usa simplemente .hover?

$(".xx").hover(function(){ 
    alert("d"); 
}); 
1

intentar algo como esto:

$('.xx').hover(function(){   
     alert('d'); 
    }, function() { 
     alert('f); 
    }); 
+1

¡Cómo me ayuda a controlar el vuelo de los padres! – Adrian

0

intentar algo como esto

flag = ($('.xx:hover').length>0); 

Así se puede averiguar si el ratón es, el objeto

0
x.filter(':hover').length 

Esto también puede utilizarse cuando ya ha consultado algunos objetos o la función de devolución de llamada interna.

0

Aquí hay un pequeño jQuery plugin que comprueba si el mouse está sobre un elemento.

Uso:

$("#YourElement").isMouseOverMe();

Ejemplo:

(function($) { 
 

 
    var mx = 0; 
 
    var my = 0; 
 

 
    $(document).mousemove(function(e) { // no expensive logic here 
 
    mx = e.clientX; 
 
    my = e.clientY; 
 
    }) 
 

 
    $.fn.isMouseOverMe = function() { 
 

 
    var $el = $(this); 
 
    var el_xmin = $el.offset().left; 
 
    var el_ymin = $el.offset().top; 
 
    var el_xmax = el_xmin + $el.width(); 
 
    var el_ymax = el_ymin + $el.height(); 
 
    return mx >= el_xmin && mx <= el_xmax && my >= el_ymin && my <= el_ymax; 
 
    }; 
 

 
}(jQuery)); 
 

 
$(document).mouseup(function(e) { 
 
    console.log($("#div").isMouseOverMe()) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h2>Click inside or outside of the yellow box</h2> 
 
<div id="div" style="width:200px;height:200px;background-color:yellow;margin-top:50px"></div>