Jquery条件检查是(’:hover’)不起作用

$('.xx').mouseenter(function(){ if($(this).is(':hover')) alert('d'); else alert('f'); }); 

这是我的代码,它应该警告’d’,但每次它警告’f’这里有什么错误

 function idIsHovered(id){ return $("#" + id + ":hover").length > 0; } 

http://jsfiddle.net/mathheadinclouds/V342R/

:hover是一个CSS 伪类 ,而不是jQuery选择器。 它不能与所有浏览器上的is()一起使用。

正如Frederic所说:hover是CSS的一部分,并不是jQuery中的选择器。

有关替代解决方案,请参阅如何检查鼠标是否在jQuery中的元素上?

将mouseout上的超时设置为淡出并将返回值存储到对象中的数据。 然后onmouseover,如果数据中有值,则取消超时。

删除淡出回调的​​数据。

你为什么不用.hover?

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

试试这样的事情 –

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

尝试这样的事情

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

所以你可以找出鼠标是否是对象

 x.filter(':hover').length 

当您已经查询了某些对象/或内部回调函数时,这也可以使用。

这是一个小jQuery插件 ,用于检查鼠标是否在元素上。

用法:

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

例:

 (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()) }) 
  

Click inside or outside of the yellow box