首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-01 22:06:53

你在你的描述中用了正确的词。使用stop()

代码语言:javascript
运行
复制
$("#photo").stop().fadeTo("fast", 0, function() {
票数 4
EN

Stack Overflow用户

发布于 2012-08-01 22:07:20

您可以使用setTimeout函数在两次单击抓取之间进行延迟。我的意思是,第二次点击只有在一段时间后,在第一次点击之后才会被处理。它设置两次单击之间的间隔。

票数 0
EN

Stack Overflow用户

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

我相信你要找的是.stop() http://api.jquery.com/stop/

代码语言:javascript
运行
复制
$("#photo").stop(false, false).fadeTo()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11761011

复制
相关文章

相似问题

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