首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jQuery中防止双重动画

在jQuery中防止双重动画
EN

Stack Overflow用户
提问于 2012-08-01 22:03:32
回答 6查看 1.6K关注 0票数 3

当用户点击太快时,我如何才能阻止这个函数发生两次?

代码语言:javascript
运行
复制
$(document).ready(function() {
    $(".jTscroller a").click(function(event) {
        event.preventDefault();
        var target = $(this).attr("href");
        $("#photo").fadeTo("fast", 0, function() {
            $("#photo").attr("src",target);
            $("#photo").load(function() {
                $("#photo").fadeTo("fast", 1);
            });
        });
    });
});

我的问题是,如果用户点击太快,元素将不会淡入,它只会保持隐藏。

问题并不是我想的那样。当我点击相同的缩略图时,它会尝试加载相同的图像,并永远保持加载状态。.stop()答案确实修复了双重动画,所以我接受这个答案,但我的解决方案是检查最后单击的项是否是当前显示的项。新脚本:

代码语言:javascript
运行
复制
$(document).ready(function() {
    $(".jTscroller a").click(function(event) {
        event.preventDefault();
        var last = $("#photo").attr("src");                 
        var target = $(this).attr("href");
        if (last != target) {
            $("#photo").stop().fadeTo("fast", 0, function() {
                $("#photo").attr("src",target);
                $("#photo").load(function() {
                    $("#photo").fadeTo("fast", 1);
                });
            });
        };
    });
});
EN

Stack Overflow用户

发布于 2012-08-01 22:08:49

我会像这样防止它:

代码语言:javascript
运行
复制
var photo = $("#photo");
if (0 == photo.queue("fx").length) {
     foto.fadeTo();
}

我与stop不同,因为它只在这个元素上的所有动画都完成时才会触发。此外,将元素存储在变量中也会节省一些时间,因为选择器只需获取该元素一次。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11761011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档