【问题标题】:Jquery, prevent queuing animationsJquery,防止排队动画
【发布时间】:2026-01-30 15:15:02
【问题描述】:

我有一个 div,它在悬停(和悬停)时淡入/淡出页面上的另一个元素。问题是没有什么可以阻止用户快速地盘旋并导致动画排队。

这是我的代码:

<div class="hovertest">test</div>

<div class="test">test2</div>

jquery:

$("div.hovertest").hover(
      function () {
        $(".test").fadeOut();
      }, 
      function () {
        $(".test").fadeIn();
});

CSS:

div {
    width:200px;
    height:100px;
    background-color:#B22;
}

这里是 jsfidde 的链接:http://jsfiddle.net/btEXH/

【问题讨论】:

    标签: jquery queue jquery-animate


    【解决方案1】:

    您想使用stop 函数并为 clearQueue 和 jumpToEnd 传递 true。

    $("div.hovertest").hover(
      function () {
        $(".test").stop(true, true).fadeOut();
      }, 
      function () {
        $(".test").stop(true, true).fadeIn();
    }); 
    

    http://jsfiddle.net/infernalbadger/btEXH/1/

    【讨论】:

    • 是否可以从动画停止的地方淡入/淡出,而不是跳到最后然后运行动画。 - 否则就完成了工作。谢谢!
    • @Tom 应该可以通过将第二个参数更改为 false 来实现。虽然这似乎会导致不透明问题
    • 是的,我试过了,也遇到了同样的问题。在这种情况下,它应该不会导致问题,但如果动画速度较慢,它可能看起来有点奇怪。
    • @Tom 您可以通过使用fadeTo jsfiddle.net/infernalbadger/btEXH/2 指定目标不透明度来解决该问题