【问题标题】:How to stop looping slide in jQuery如何在jQuery中停止循环幻灯片
【发布时间】:2014-12-05 16:42:18
【问题描述】:

我制作了一个函数,将鼠标悬停在内容框上,并且类名为 bottomdata 的 div 从顶部向下滑动。这个功能很好用,除非你在盒子上滚动多次,动画会循环运行。我想让动画运行一次,然后在第一个动画循环完成后停止,直到它再次悬停。

    $(".databox").on('mouseenter', '.box', function() {
        $(this).find('.topdata').slideUp(400);
        $(this).find('.bottomdata').slideDown(350);
    }).on('mouseleave', '.box', function() {
        $(this).find('.bottomdata').slideUp();
        $(this).find('.topdata').slideDown();           
    });

所以我尝试使用 stop();我也尝试使用finish()。我什至尝试使用 clearQueue()。我似乎无法弄清楚。非常感谢所有帮助。

我在 jsfiddle 上包含了一个示例:http://jsfiddle.net/4cx1kygc/

【问题讨论】:

  • 它没有在 Chrome 39.0.2171.71 m 上循环。你在什么浏览器上测试?
  • 将鼠标悬停在它上面多次,我的浏览器是 Windows 上的 Chrome/Firefox。我认为这不是浏览器问题。
  • 每次悬停时,“bottomdata”都会向上滑动以覆盖“topdata”。当我退出该框时,“bottomdata”将返回,而“topdata”仍保留在顶部。这发生在每次悬停时。你想要发生什么?
  • @JonathanM,如果你轻弹进出 9 次,动画就会发生 9 次。

标签: javascript jquery


【解决方案1】:
$('.databox').on('mouseenter', '.box', function() {
    var that = $(this);

    that.find('.topdata').stop(true, true).slideUp(400);
    that.find('.bottomdata').stop(true, true).slideDown(350);
}).on('mouseleave', '.box', function() {
    var that = $(this);

    that.find('.topdata').stop(true, true).slideDown();
    that.find('.bottomdata').stop(true, true).slideUp();
});

Documentation Demo

【讨论】:

  • 啊,我明白了,我没有尝试将停止功能放在每个动画上。我主要尝试在鼠标离开后停止它,或者只是在输入时停止它。非常感谢。
  • @TrueBlueAussie 不同的是,这个解决方案是的,使用stop(),但是使用了两个参数,第一个用于清空队列,第二个用于强制当前动画突然结束直到结束点。
  • @TrueBlueAussie 我阅读了您的评论,并假设您仅指第一个元素,而不是所有元素。虽然我非常感谢您对我的麻烦的帮助,但您的态度只是有害的,没有任何建设性的东西可以从中产生。 :)
  • @TrueBlueAussie 有多个人同时说话,我不是超人。我一次只能回复这么多,并且将您的观点视为我已经尝试过的东西。我不是在抨击你,只是说明我在阅读和尝试示例时发生的事情。非常感谢您的意见。
  • @silentw,我想我可能遗漏了一些东西。行为有何变化?
猜你喜欢
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2012-08-11
  • 2014-01-18
  • 2023-03-26
相关资源
最近更新 更多