我不是在寻找一个行动调用 的时候 徘徊,而是要告诉的方式 ,如果 一个元素正在上空盘旋目前。例如:
$('#elem').mouseIsOver(); // returns true or false
是否有实现此目的的jQuery方法?
原始(正确)答案:
您可以使用is()并检查选择器:hover。
is()
:hover
var isHovered = $('#elem').is(":hover"); // returns true or false
(这仅在选择器最多匹配一个元素时有效。有关更多信息,请参见“编辑3”。)
。
编辑1(2013年6月29日):( 仅适用于jQuery 1.9.x,因为它与1.10+兼容,请参阅下一个编辑2)
在回答问题时,此答案是最好的解决方案。这个’:hover’选择器.hover()在jQuery 1.9.x中被删除了。
.hover()
有趣的是,“ allicarn”最近的回答显示,:hover当您为选择器添加前缀时,可以将其用作CSS选择器(与Sizzle相对)$($(this).selector + ":hover").length > 0。
$($(this).selector + ":hover").length > 0
编辑2(2013年9月21日): .is(":hover") 作品
.is(":hover")
根据另一条评论,我注意到,我发布的原始方式.is(":hover")实际上仍然可以在jQuery中使用,因此。
它在jQuery 1.7.x中有效。
当有人向我报告它时,它在1.9.1中停止工作,我们都认为它与jQuery删除该hover版本中事件处理的别名有关。
hover
它在jQuery 1.10.1和2.0.2(也许是2.0.x)中再次起作用,这表明1.9.x中的失败是一个错误,或者不是我们先前所想的故意行为。
如果要在特定的jQuery版本中进行测试,只需在此答案的开头打开JSFidlle示例,更改为所需的jQuery版本,然后单击“运行”。如果颜色在悬停时发生变化,则可以使用。
如@Wilmer在评论中所示,他有一个小提琴,甚至无法与我和此处其他人对其进行测试的jQuery版本一起使用。当我试图找到关于他的案子有什么特别之处时,我注意到他试图一次检查多个要素。这是投掷的Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover。
Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover
var isHovered = !!$('#up, #down').filter(":hover").length;
虽然这 DOES 工作:
var isHovered = !!$('#up,#down'). filter(function() { return $(this).is(":hover"); }).length;
它也适用于包含单个元素的jQuery序列,例如原始选择器仅匹配一个元素,或者您调用.first()了结果等。我的JavaScript + Web开发技巧和资源时事通讯也对此进行了引用。
.first()