【发布时间】:2015-07-22 11:30:45
【问题描述】:
请看https://jsfiddle.net/cot33dxa/
setInterval(function() {
if ($("#one").is(":hover")) {
$("#one").css("background-color", "red");
} else {
$("#one").css("background-color", "");
}
}, 0);
if ($("#two").is(":hover")) {
$("#two").css("background-color", "blue");
} else {
$("#two").css("background-color", "");
}
#one {
width: 200px;
height: 200px;
background-color: yellow;
}
#two {
width: 200px;
height: 200px;
background-color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="one"></div>
<div id="two"></div>
为什么对于 div 1,悬停检查工作正常,而在 div 2 中却不行?
我在使用if ($('#element:hover').length != 0)(取自ivo's solution)时遇到了同样的问题。
为此 JS 小提琴:https://jsfiddle.net/q8dfLc6s/
在更一般的意义上,我正在寻找最简单、最可靠的方法来了解鼠标是否在 JQuery 1.11.0 中的 div 上。就目前而言,除了这个 SetInterval 奇怪之外,我什至无法让布尔检查工作。
【问题讨论】:
-
你为什么使用 setInterval 而不是 dom mouseover/enter/out/leave 事件 (jQuery hover) 或 :hover css 伪类(如果你只需要这个来做样式)?
-
请在您的问题中发布您的代码。
-
因为它在这里用于类似的问题stackoverflow.com/a/8981521/2472351 我试图对他的解决方案进行逆向工程,但不明白为什么布尔检查会在 setInterval 函数被分解后停止工作
标签: javascript jquery