【问题标题】:Mouseover/mouseenter not fired by browser on animated/moving element浏览器未在动画/移动元素上触发鼠标悬停/鼠标输入
【发布时间】:2011-04-27 04:50:03
【问题描述】:

如果您的元素具有移动动画,则除非用户移动鼠标,否则不会触发 mouseovermouseenter 事件。为了演示使用 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>

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

【问题讨论】:

    标签: jquery animation mouseover jquery-events mouseenter


    【解决方案1】:

    这是一个浏览器错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2018-03-04
      • 2013-07-02
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多