【问题标题】:jQuery if then slideshow issuejQuery如果然后幻灯片问题
【发布时间】:2011-11-16 16:32:25
【问题描述】:

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

这是我的代码,但是当它碰到最后一张图像时我没有得到想要的结果(它应该在第一个图像中淡入并重新开始。

语法? if (slide == $('.z:last')) 在我看来很可疑。

测试地点: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;
        });

【问题讨论】:

  • 你遇到了什么行为?
  • @RoccoC5 - 当它到达结尾时(当幻灯片是 .z:last 时),它不会在第一个和所有垃圾中消失。所以我假设它的一些小语​​法交易

标签: javascript jquery user-interface controls slideshow


【解决方案1】:

试试这个:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      检查以下条件并相应地指定下一张图片。

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

      【讨论】:

        【解决方案4】:

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

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

        或者,您可以像这样测试最后一张幻灯片是否可见:

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

        【讨论】:

        • 这行不通,因为您要比较的不是元素,而是 jQuery 对象。看我的回答...
        • @nnnnnn - 你是对的......我编辑了我的帖子以通过 attr() 函数获取 id。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        相关资源
        最近更新 更多