【问题标题】:Jquery mouseout triggers when cursor is still over the element当光标仍在元素上时,Jquery mouseout 触发
【发布时间】:2013-11-15 16:40:17
【问题描述】:

在此先感谢所有愿意提供帮助的人。我的谜语是 jQuery 中的鼠标移出效果 - 我正在尝试构建一个函数,该函数可以无限期地在容器内上下移动元素。悬停时,移动应该停止并保持停止,直到光标完全离开元素。但是,发生的情况是 mouseover 事件触发正常,但是 mouseleave 事件在光标仍在元素上方时立即触发,因此动画中断。

这是简单的 HTML:

<div id="container">
  <div class="element">Some text</div>
  <div class="element">Some other text</div>
  <div class="element">Some more text</div>
</div>

移动元素通过javascript绝对定位在顶部元素上并向下和向上移动,这是jsfiddle上的示例

还有其他人必须处理这个吗?谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我认为您需要将 mouseenter 和 mouseout 事件拉到 animate 函数之外。每次调用 animate 函数时,都会向每个元素添加另一个鼠标事件。这会导致它在您鼠标移出时多次调用您的动画函数。

    这是fiddle,我添加了一个计数器来查看调用了多少次 animate 函数。

    var counter = 0;
    function animate(el, dir) {
       $("#count").val(counter);
       counter++;
    

    鼠标来回移动几次,您可以看到每次鼠标移出时它都会复合动画调用。

    【讨论】:

    • 好吧,我将悬停触发器移出 animate 函数,它确实停止了多个函数调用,jsfiddle 已更新。但是 mouseout 效果仍然存在 - 当我将鼠标悬停在元素上时,mouseover 触发,并且 mouseout 事件在之后触发,即使光标仍在元素上。我试图绑定悬停事件,但仍然没有 olove... :(
    • 我认为发生的事情是当你的鼠标进入一个 div.element 时,你将指针元素放在另一个 div 的顶部,使你的鼠标离开,因为你的鼠标现在在指针而不是 div 上。元素。此外,如果您等到指针到达底部并悬停最后一个元素然后不移动鼠标,则鼠标进入和鼠标退出都不会触发,因为您是鼠标进入指针
    • omg,你现在是如此,我完全忘记了我正在将一个元素放在被悬停的元素上。当然 mouseout 事件应该附加到移动的 div 上。我更新了jsfiddle,它工作正常。问题现已解决,感谢马特,感谢。顺便说一句,您如何看待它的完成方式?可以吗,或者可以做得更好吗?我不是 UI 编码员,只是在尝试一下... :)
    • 我喜欢你这样做的方式,它移动的动画看起来不错。目前我能想到的唯一另一种方法就是在一段时间内更改边框颜色,但这不会有它上下移动的酷动画。
    • 是的,这正是我一开始就计划做的,但认为移动元素会比仅仅改变元素类或类似的东西看起来更好。无论如何,这件事现在似乎正在工作,悬停效果出现了一些小故障,我只需要在每次事件触发时清除超时。谢谢你的建议,马特,我肯定会给你的答案投票,但我是这里的新手,他们说我还不能这样做:(
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多