当用户点击太快时,我如何才能阻止这个函数发生两次?
$(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()答案确实修复了双重动画,所以我接受这个答案,但我的解决方案是检查最后单击的项是否是当前显示的项。新脚本:
$(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);
                });
            });
        };
    });
});发布于 2012-08-01 22:08:49
我会像这样防止它:
var photo = $("#photo");
if (0 == photo.queue("fx").length) {
     foto.fadeTo();
}我与stop不同,因为它只在这个元素上的所有动画都完成时才会触发。此外,将元素存储在变量中也会节省一些时间,因为选择器只需获取该元素一次。
https://stackoverflow.com/questions/11761011
复制相似问题