在jQuery中即时完成动画队列

发布于 2024-09-13 08:22:52 字数 254 浏览 15 评论 0原文

我需要停止动画并立即完成所有待处理的动画。
停止不起作用:
假设我有一个将 0px 上的元素移动 100px 的动画,并且当它仅移动 50px 时我使用停止。结果将是 50px 处的元素。我想要的结果是当我中断动画时,即使元素在 50px 处,它也会立即跳转到 100px
我该怎么做?

I need to stop the animation and instantly complete all pending animations.
stop doesn't work:
Lets say I have animation that moves element that is on 0px by 100px and I use stop when it moved only 50px. The result will be an element at 50px. The result I want is when I interrupt the animation, even if the element is at 50px it will instantly jump to 100px.
How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

墨落画卷 2024-09-20 08:22:52

$.fn.stop() 可以选择清除队列并跳转到末尾。

只需执行以下操作: $('#foo').stop(true, true);

$.fn.stop() has the option to clear the queue and to jump to the end.

Just do something like: $('#foo').stop(true, true);

-柠檬树下少年和吉他 2024-09-20 08:22:52

发现这个在 http://forum.jquery.com /topic/stop-true-true-animation-chains-and-callbacks

(function($){
    $.fn.extend({
        hardStop: function(){
            return this.each(function(){
                var e = $(this);
                while (e.queue().length){
                    e.stop(false, true);
                }
            });
        }
    });
})(jQuery);

使用它

$("#element").hardStop();

如果这不起作用,也许将您的原始代码更改为:

$("#abc").stop().animate(...

found this at http://forum.jquery.com/topic/stop-true-true-animation-chains-and-callbacks

(function($){
    $.fn.extend({
        hardStop: function(){
            return this.each(function(){
                var e = $(this);
                while (e.queue().length){
                    e.stop(false, true);
                }
            });
        }
    });
})(jQuery);

use it by

$("#element").hardStop();

If that doesn't work, maybe change your original code to:

$("#abc").stop().animate(...
浮光之海 2024-09-20 08:22:52

手动指定最后的状态,不要偷懒。我确信你能做到:)

$('#foo').stop(true, true);
$('#foo').css({x, '100px'});

Specify manually the last state, don't be lazy. Im sure you can do it :)

$('#foo').stop(true, true);
$('#foo').css({x, '100px'});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文