如果您的元素具有移动动画,则除非用户移动鼠标,否则不会触发 mouseover
和 mouseenter
事件。要演示,请使用 jQuery 尝试下面的代码块。
如果您将鼠标放在移动的 div 前面,这样当 div 经过时您就不会移动鼠标,那么 mouseover
不会被触发, block 也不会停止。
在 Firefox 中,无需手动将鼠标移动到 div 上,即可触发 mouseover
事件,但前提是您至少移动过一次鼠标。
我的问题是,是否有解决方法,以便在鼠标光标下移动的元素仍会触发其 mouseover
事件?
<script>
$(function() {
var move = 10,
left = 0,
width = 100;
var stop = setInterval(function() {
left += move;
$('#mydiv').css('left', left);
if (left < 0 || (left + width > parseInt($(window).width())))
move = -1 * move;
}, 10);
$('#mydiv').mouseover(function() { clearInterval(stop); });
});
</script>
<div id="mydiv" style="width: 100px; height: 100px; position: absolute; top: 0; left: 0; background-color: Black;"> </div>
我知道这个例子是人为的,但它只是为了演示这个问题。
最佳答案
这是一个浏览器错误。
唯一的解决方法是在 document
级 mousemove
处理程序中跟踪全局鼠标坐标,然后在动画期间检查元素是否覆盖了这些坐标。
关于jquery - 浏览器在动画/移动元素上未触发鼠标悬停/鼠标输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963803/