3

如果你有一个元素有一个动画来移动它,除非用户移动鼠标,否则不会触发mouseoverand事件。mouseenter为了演示使用 jQuery 尝试下面的代码块。

如果您将鼠标放在移动的 div 前面,那么当 div 经过时您不会移动鼠标,mouseover则不会触发并且块不会停止。

在 Firefox 中,mouseover无需手动将鼠标移动到 div 上即可触发该事件,但前提是您至少移动了一次鼠标。

我的问题是有一种解决方法,所以在鼠标光标下移动的元素仍然会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;">&#160</div>

我知道这个例子是人为的,但这只是为了证明这个问题。

4

1 回答 1

0

这是一个浏览器错误。

document唯一的解决方法是在-level处理程序中跟踪全局鼠标坐标mousemove,然后在动画期间检查元素是否覆盖这些坐标。

于 2010-10-18T22:13:12.013 回答