【问题标题】:Modify jQuery slider to start in different position修改 jQuery 滑块以从不同位置开始
【发布时间】:2013-09-05 22:27:12
【问题描述】:

我正在使用从另一个 SO 帖子中获得的滑块 - 原始小提琴是 here。我对 jQuery 还是很陌生。

我已经想出了如何阻止它自动播放,但我想知道是否有办法修改代码,使其在不同于 1 的幻灯片上开始?我收到了在第二张幻灯片上启动它而不删除第一张幻灯片的请求。

这不是像 WowSlider 之类的插件或类似的插件,只是从这个网站上一个很棒的人那里得到代码。这是我的 jQuery 和 here is a fiddle 的所有内容。

            var thumbs = $('ul.thumbHolder li');var bigImgs = $('ul.imgHolder li');
            var mask = $('.imgHolder');
            var imgW = $('ul.imgHolder li').width();
            var speed = 300;

            thumbs.removeClass('selected').first().addClass('selected');

            thumbs.click(function () {
                var target = $(this).index();

                mask.animate({
                    'left': '-' + imgW * target + 'px'
                }, speed);


                thumbs.removeClass('selected');
                $(this).addClass('selected');
            });


            $('.Bleft').on('click', function () {
                var i = $('ul.thumbHolder li.selected').index();
                i--;

                $('ul.thumbHolder li.selected').removeClass('selected');
                thumbs.eq(i).addClass('selected');

                if (i === -1) {
                    mask.animate({
                        'left': '-' + imgW * $('ul.thumbHolder li').index() + 'px'
                    }, speed);
                } else {
                    mask.animate({
                        'left': '-' + imgW * i + 'px'
                    }, speed);
                }
                clearInterval(counter);
            });
            $('.Bright').on('click', function () {
                var i = $('ul.thumbHolder li.selected').index();
                i = i >= thumbs.length - 1 ? 0 : i + 1;

                $('ul.thumbHolder li.selected').removeClass('selected');
                thumbs.eq(i).addClass('selected');

                mask.animate({
                    'left': '-' + imgW * i + 'px'
                }, speed);
                clearInterval(counter);
            });
            var count = 0;
            var counter = window.setInterval(timer, 5000);

            function timer() {
                count = count + 0;
                if (count >= 0) {
                    count = 0;
                    return;
                }
                mask.animate({
                    'left': '-' + imgW * count + 'px'
                }, speed);
                thumbs.removeClass('selected');
                thumbs.eq(count).addClass('selected');
            }

提前感谢您的帮助!

【问题讨论】:

    标签: jquery slider


    【解决方案1】:

    将此代码放在var counter = window.setInterval(timer, 5000);这一行的下方

    thumbs.removeClass('selected').eq(1).addClass('selected');// the 1 is the zero-index of the li tag (the li is the image holder)
    mask.animate({
        'left': '-' + imgW * 1 + 'px'// the 1 is the zero-index of the li tag
    }, 0);// will place image in correct position in 0 milliseconds = no animation at start
    

    【讨论】:

    • 谢谢,这对我有用!也欣赏 cmets,有助于学习。
    【解决方案2】:

    例如,如果你想从第二张幻灯片开始,你必须替换它:

    thumbs.removeClass('selected').first().addClass('selected');
    

    用这个:

    thumbs.removeClass('selected').eq(1).addClass('selected');
    

    诀窍是通过选择 "thumbs" == "$('ul.thumbHolder li');" 从 1 到 5 中选择包含图片的元素的位置选择器。这个 ul 中有 5 个 li 元素,所以 function eq(x) 可以让你选择 xnd 元素,尽管你想要的图片。

    【讨论】:

    • 感谢 Dejv。我在上面放的小提琴示例中尝试了它,它就像一个魅力。然而,在我的身上,它仍然最初加载第一张幻灯片。然后,当我点击下一个按钮时,它会跳过第二张幻灯片并跳到第三张。我隐藏了缩略图并用   填充了缩略图的列表项。这可能与它有关吗?
    • 我不太确定,如果我把你的代码插入到你提供的小提琴可访问的 throw 链接中,我做了一个改变,我建议一切都很好。 ...可能有必要向我提供完整的代码,以便我更好地测试它。
    • 我用我当前的代码创建了一个新的小提琴 - 它有你建议的修复,但仍然从幻灯片 1 开始。我尝试添加缩略图并重新添加自动启动功能,但它仍然没有转到幻灯片 2。奇怪! jsfiddle.net/psaj9
    • 嗨,非常感谢您发布您的小提琴。我将它移到我的本地主机以获得更好的调试选项,但不幸的是我无法让它工作。在用你的小提琴摆弄了一下之后,我有了一个想法:你为什么不简单地在你的 imgHolder ul 中重新组织你的 lis?这样您就可以按任何所需的顺序显示它们。此外,为了使其正常工作,您需要将 eq(1) 切换回 first() 或 eq(0)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2017-02-27
    • 2018-04-25
    • 2018-12-24
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多