jQuery if then 幻灯片放映问题

发布于 2024-12-04 08:35:00 字数 989 浏览 1 评论 0原文

我有一个通过上一个和下一个按钮手动控制的幻灯片。它工作得很好,但是使用 insertBeforeinsertAfter 感觉很草率,所以我想探索一些其他方法。相反,我在想“如果这是最后一张图像,请返回到第一张图像+相反的向后退图像。

这是我的代码,但是当它到达最后一张图像时(它应该褪色的地方),我没有得到所需的结果语法

)) 对我来说看起来很可疑。

? if (slide == $('.z:last ' .dhut.ch/" rel="nofollow">http://brantley.dhut.ch/

谢谢!

这是我的 JavaScript:

        $('#next').click(function() {
            var slide = $('.z:visible'),
                next  = $('.z:visible').next();

            slide.fadeOut(400, function() {
                slide.removeClass('active');
                if (slide == $('.z:last')) {
                    $('.z:first').addClass('active');
                    bromance();
                    $('.z:first').fadeIn(400);
                } else {
                    next.addClass('active');
                    bromance();
                    next.fadeIn(400);
                }
            });
            return false;
        });

I've got a slideshow that's manually controlled with previous and next buttons. It works fine, but using insertBefore and insertAfter feels sloppy, so I'd like to explore some other methods. Instead, I'm thinking "if this is the last image, go back to the first + the opposite for going backwards.

Here's my code, but I'm not getting the desired result when it hits the last image (where it should fade in the first and start all over.

Syntaxual? if (slide == $('.z:last')) looks fishy to me.

Test site: http://brantley.dhut.ch/

Thanks!

Here's my JavaScript:

        $('#next').click(function() {
            var slide = $('.z:visible'),
                next  = $('.z:visible').next();

            slide.fadeOut(400, function() {
                slide.removeClass('active');
                if (slide == $('.z:last')) {
                    $('.z:first').addClass('active');
                    bromance();
                    $('.z:first').fadeIn(400);
                } else {
                    next.addClass('active');
                    bromance();
                    next.fadeIn(400);
                }
            });
            return false;
        });

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

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

发布评论

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

评论(4

忘年祭陌 2024-12-11 08:35:00

试试这个:

if (slide[0] == $('.z:last')[0]) { ...

jQuery 不会直接返回对 DOM 元素的引用,它返回一个类似数组的对象,其中每个数组元素都是与您使用的选择器匹配的 DOM 元素。这意味着比较两个选择器的结果就是比较两个不同的类似数组的对象,即使它们包含相同的元素,它们也永远不会匹配。相反,比较每个数组中的第一个元素(因为在您的情况下您只期望只有一个元素)。

Try this:

if (slide[0] == $('.z:last')[0]) { ...

jQuery doesn't return a reference to a DOM element directly, it returns an object that is array-like, where each array element is a DOM element matching the selector you used. This means comparing the results from two selectors is comparing two different array-like objects which isn't ever going to match even if they contain the same elements. Compare the first element in each array instead (because in your case you're expecting only one element anyway).

油焖大侠 2024-12-11 08:35:00

为什么不使用 slide = $('.active') 并尝试 :first-child 而不是 :first

why don't you use slide = $('.active') and try :first-child instead of :first

一百个冬季 2024-12-11 08:35:00

下一个 = $('.z:visible').next();

检查以下条件并相应地指定下一个图像。

if($('.z:last')){
   next = $(".z:first")
}
else{
   next  = $('.z:visible').next();
}

next = $('.z:visible').next();

check the below condition and specify the next image accordingly.

if($('.z:last')){
   next = $(".z:first")
}
else{
   next  = $('.z:visible').next();
}
夏末 2024-12-11 08:35:00

我会比较元素 id 是否相等。

if (slide == $('.z:last')) 更改为 if (slide.attr('id') === $('.z:last')。 attr('id'))

或者,您可以测试最后一张幻灯片是否可见,如下所示:

if ($('.z:last:visible')) {
    // last slide is visible
}

I would compare element ids for equality.

Change if (slide == $('.z:last')) to if (slide.attr('id') === $('.z:last').attr('id')).

Or, you can test to see if the last slide is visible like so:

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