jQuery:fadeIn/fadeOut 第一次对图像不起作用

发布于 2024-12-28 12:42:13 字数 762 浏览 1 评论 0原文

我有一个简单的图像幻灯片,并使用 jQuery 淡出一个图像并淡入另一个图像,并相应地更改 z-index。但效果只有在第一次之后才起作用。如下所示: http://jsfiddle.net/AXMX8/1/ (我的测试中的行为相同文件)

我认为这可能与尚未加载图像有关,因此我尝试在测试文件中使用 $(window).load() 包装代码,但它仍然是相同的。

function fadeSlide($out, $in) {
    $out.fadeOut("slow", function(){
        $(this).removeClass("slide-active");
    });

    $in.fadeIn("slow", function(){
        $(this).addClass("slide-active");
    });
}

function switchSlide() {
    var imgs = $('#slides img');
    var current = $('.slide-active');
    var next = current.next();
    if (next.length == 0) {
        next = imgs.eq(0);
    }
    fadeSlide(current, next);
}

setInterval(switchSlide, 2000);

感谢您的任何帮助。

I have a simple slideshow of images and use jQuery to fade out one and fade in another, and change z-index accordingly. But the effects only work after the first time. As shown here: http://jsfiddle.net/AXMX8/1/ (same behaviour in my test file)

I thought it might have to do with image not being loaded yet, so I tried wrapping the code with $(window).load() in my test file, but it was still the same.

function fadeSlide($out, $in) {
    $out.fadeOut("slow", function(){
        $(this).removeClass("slide-active");
    });

    $in.fadeIn("slow", function(){
        $(this).addClass("slide-active");
    });
}

function switchSlide() {
    var imgs = $('#slides img');
    var current = $('.slide-active');
    var next = current.next();
    if (next.length == 0) {
        next = imgs.eq(0);
    }
    fadeSlide(current, next);
}

setInterval(switchSlide, 2000);

Thanks for any help.

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

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

发布评论

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

评论(1

薄荷梦 2025-01-04 12:42:13

当函数第一次运行时,它作为 $in 变量使用的图像是可见的。因此,淡入不会出现,因为它要求所需的图像不可见。图像只是翻转到前面。

这是一个简单的解决方案。 最后一行替换为:

$(function(){
    $('#slides img').hide();
    $('#slides img').first().show();
    setInterval(switchSlide, 2000);
});

When the function runs for the first time, the image it takes as the $in variable is visible. Therefore, the fade-in does not appear, as it requires the desired image to be invisible. The image just flips to the front.

Here's a simple solution. Last line was replaced with:

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