【问题标题】:Multiple sliders, buttons controlling all sliders多个滑块,控制所有滑块的按钮
【发布时间】:2014-06-23 16:18:06
【问题描述】:

我正在尝试使用此滑块:http://codepen.io/zuraizm/pen/vGDHl

我需要在页面上有多个滑块,最多 10 个。这是一个属性列表页面,这是一个非常轻的滑块。

当前,当您按下一步时,它会滑动每个滑块的图像。我知道这是一个 ID 问题,但是有没有一种简单的方法来解决这个问题而不必拥有数十个不同的 ID?

更新!

这是我更新的笔,滑块工作:http://codepen.io/LukeD1uk/pen/LEKBa 但似乎每个滑块都在加载 UL 中的最后一个 LI

【问题讨论】:

  • 这应该是一个很容易解决的问题。在nextprev 按钮的单击事件中,将parent 传递给函数,然后使用它来执行动画。它将范围限制为仅正在使用的滑块。
  • 您可以修复它,但这是一个快速修复。您需要更改 jQuery(和 CSS)以使用类而不是 ID,此外它还需要引用被单击的单个实例,而现在它引用特定的 ID。
  • @Shaded Yeh,我唯一担心的是 id #slider 有样式。你可以再详细一点吗?我只是想避免每个滑块都有新的重复样式。
  • @j08691 谢谢,我试试看。
  • 你可以把它变成一个jQuery插件,然后在任何地方都可以轻松使用。

标签: javascript jquery html slider multiple-instances


【解决方案1】:

我在想这样的事情......

function moveRight(slider) {
    slider = $(slider);
    slider.find('ul').animate({
        left: - slideWidth
    }, 200, function () {
        slider.find('ul li:first-child').appendTo(slider.find('ul'));
        slider.find('ul').css('left', '');
    });
};

$('a.control_next').click(function () {
    moveRight($(this).parent());
});

使唯一的全局选择是a.control_next,然后将其余的范围限定为实际发生点击的位置。

编辑:选择比您想要的更多还有一些其他问题。这是另一个固定位置。

这个

$('#slider ul li:last-child').prependTo('#slider ul');

变成这样

$('.slider').each(function(slider){
  slider = $(slider);
  slider.find('ul li:last-child').prependTo(slider.find('ul'));
});

这会获取每个滑块中的最后一张图片并将其添加到列表中,这样后退按钮就会起作用。如果图片宽度/高度/数量不同,或者您选择实现复选框自动滚动,您将遇到其他问题。

要解决这些问题,您需要在 js 中实现更好的结构,以便每个滑块都有自己的变量。我真的没有时间去设置它,抱歉。

【讨论】:

  • 哦,太好了!那是一种工作。我现在可以滑动单个滑块。唯一的事情是我认为所有图像都是同时加载的。不是 UL 中的具体规定。
  • @LukeD1uk 我真的不明白你对图像加载的意思。可以举个例子吗?
  • 如您所见:codepen.io/LukeD1uk/pen/LEKBa 它正在将所有图像加载到每个滑块中。
  • 在我看来,它加载了每个 ul 中的最后一个 li 我不明白为什么......
  • @LukeD1uk 将最后一张图片放在第一张之前,这样后退按钮将在初始加载时起作用。我将它包装在一个 jquery 中,以便它的范围正确,我会尽快更新答案。
猜你喜欢
  • 2012-01-06
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多