这样做的问题是:例如,任何“下一步按钮”都控制页面上的每个幻灯片。
这是因为您当前的代码创建了一个事件侦听器设置,其中任何“下一个”或“上一个”按钮都会触发每个幻灯片做出反应。您需要一种方法来明确地将每组下一个/上一个按钮与其各自的幻灯片相关联。一种方法是data-
为每个幻灯片按钮集生成唯一的属性值,并使用 JavaScript 将两者链接起来:
$('.nextIco').click(function(e) {
var sid = $(e.currentTarget).attr('data-slideshow-id');
$('.contentimage[data-slideshow-id="' + sid + '"]').cycle('next');
});
但是,更好的方法是使用它们在 DOM 树中的相对位置将每个幻灯片与其对应的按钮相关联(假设在您的 HTML 中,您的每个幻灯片都被一些容器元素封装):
<div class="slideshow-wrapper">
<div class="prevIco"></div>
<div class="slides-wrapper">
<!-- Slideshow content/slides here ... -->
</div>
<div class="nextIco"></div>
</div>
您的 JavaScript 可能如下所示:
$(document).ready(function() {
$('.prevIco .nextIco').on('click', function(e) {
var button = $(e.currentTarget);
var action = (button.hasClass('.prevIcon')) ? 'prev' : 'next';
button.siblings('.slides-wrapper').cycle(action);
});
});
这是 Mike Alsup 网站的相关演示:http:
//jquery.malsup.com/cycle/prevnext.html