【问题标题】:jQuery stop fadeTo effectjQuery停止fadeTo效果
【发布时间】:2011-09-21 08:13:02
【问题描述】:

我想要的是一种鼠标轨迹效果,当您将鼠标悬停在 div 上或下时。但是,如果您将鼠标悬停数次过快然后停止,效果会自行重复。

我该如何解决这个问题?我想我需要某种出队的东西,比如 animate 选项,但是对于 fadeTo 函数。有任何想法吗?

$(".test").mouseover(function(e) {
  $(this).fadeTo(200, 1);
}).mouseout(function(e) {
  $(this).fadeTo(200, 0.3);
});
.test {
  padding: 5px;
  width: 200px;
  color: #ffffff;
  font-weight: bold;
  background: #000000;
  opacity: 0.3;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>
<div class='test'>asd</div>

【问题讨论】:

标签: jquery


【解决方案1】:

您可以使用.stop 方法停止以前的动画。如果你传入true 作为参数,它也会清除队列中的动画。

如果我正确理解了您要查找的内容,那么您想要的是这个(您说您想要“鼠标轨迹”,我的意思是您不希望之前的动画停止一旦鼠标离开该元素,因此只有一次调用.stop):

$(".test").mouseover(function(e){
    $(this).stop(true).fadeTo(200,1);
}).mouseout(function(e){
    $(this).fadeTo(200,0.3);
});

你可以看到运行here

【讨论】:

    【解决方案2】:

    正如你在标题中描述的那样:)

    $(".test").mouseover(function(e){
        $(this).stop().fadeTo(200,1);
    }).mouseout(function(e){
        $(this).stop().fadeTo(200,0.3);
    });
    

    【讨论】:

    • 简单地停止也会降低平滑轨迹效果。
    • @aoi 我认为 James Allardice 的答案正是你想要的!
    【解决方案3】:

    添加.stop() 以终止您之前的动画:http://jsfiddle.net/sJFLq/5/

    $(".test").mouseover(function(e){
        $(this).stop(true, true).fadeTo(200,1);
    }).mouseout(function(e){
        $(this).stop(true, true).fadeTo(200,0.3);
    });
    

    【讨论】:

    • 确保将这两个参数设置为根据需要停止。第一个参数清除此对象的任何其他待处理动画的队列,第二个参数跳转到动画的末尾(通常需要正确定位下一个动画)。通常,您需要.stop(true, true)。两者的默认值都是 false。请参阅api.jquery.com/stop 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2010-09-08
    • 2018-04-24
    相关资源
    最近更新 更多