【发布时间】:2014-07-28 22:12:26
【问题描述】:
我使用 jQuery 编写了一个非常简单的滑块。它的工作原理是对子 img 元素进行计数和编号,并显示与计数器变量相对应的 img,该计数器变量随着用户按下“右”按钮而增加,如果按下“左”按钮则减少。除非页面上有多个实例,否则它工作正常。(我认为因为变量是全局的)
一个按钮最终控制所有滑块的流动。此外,一次只有一个滑块会显示图像,因为它们都引用相同的变量。
有没有办法让滑块的每个实例都有自己的计数器 ($n) 和幻灯片编号 ($slides) 变量?
这是我所拥有的东西:http://jsfiddle.net/Mn4jk/2/(虽然没有实际图像)
这里是直接的html和jQuery
html:
<div>
<img src="../graphics/arrow_left.png" class="left" alt="left">
<img src="../graphics/arrow_right.png" class="right" alt="right">
<div class="carousel">
<img src="../graphics/img1.png" alt="1">
<img src="../graphics/img2.png" alt="2">
<img src="../graphics/img3.png" alt="3">
</div>
</div>
jQuery:
$(window).ready(function () {
var $n = 0;
var $slides = $('.carousel img').length - 1;
$('.right').click(function () {
if ($n <= ($slides - 1)) {
$('.carousel img').eq($n).fadeOut('400');
$n++;
$('.carousel img').eq($n).delay('400').fadeIn('400');
} else {
$('.carousel img').eq($slides).fadeOut('400');
$n = 0;
$('.carousel img').eq(0).delay('400').fadeIn('400');
}
});
$('.left').click(function () {
if ($n >= 1) {
$('.carousel img').eq($n).fadeOut('400');
$n--;
$('.carousel img').delay('400').eq($n).fadeIn('400');
} else {
$('.carousel img').eq(0).fadeOut('400');
$n = ($slides)
}
$('.carousel img').delay('400').eq($n).fadeIn('400');
});
$('.carousel img').eq($n).fadeIn('400');
});
我知道我可以只复制代码并创建一个新类,但我更喜欢一个允许在一个页面上使用任意数量的滑块的解决方案。
【问题讨论】:
-
您可以尝试使用 data-attributes="count" 并通过它进行管理。
标签: jquery html css slider carousel