我正在实现jQuery循环插件,以创建20个图像库,每个图库都有自己的上一个,下一个和寻呼机导航控件,而不必为每个幻灯片创建和引用3个新的id名称,并避免创建每个幻灯片的单独功能。在下面的示例中,我尝试为每个幻灯片显示一个独特的寻呼机,但没有成功。我希望有一种更直观的方法来使用 .each()函数来编写它。提前感谢任何可以提供帮助的人。
HTML: (在这个例子中我只包括两个幻灯片)
<div class="slideshow_container">
<div class="work_slideshow">
<div class="slideshow" id="s1">
<img class="slide" src="images/port/design_unique_1.jpg" />
<img class="slide" src="images/port/design_unique_2.jpg" />
<img class="slide" src="images/port/design_unique_3.jpg" />
</div>
<div class="controls">
<img src="images/arrow_left.png" class="prev"/>
<img src="images/arrow_right.png" class="next"/>
</div>
<div class="pager" id="pager1"></div>
</div>
<div class="work_slideshow">
<div class="slideshow" id="s2">
<img class="slide" src="images/port/design_equality_1.jpg" />
<img class="slide" src="images/port/design_equality_2.jpg" />
</div>
<div class="controls">
<img src="images/arrow_left.png" class="prev"/>
<img src="images/arrow_right.png" class="next"/>
</div>
<div class="pager" id="pager2"></div>
</div>
</div>
jQuery的:
$('.slideshow').cycle({
fx: 'fade',
easing: 'easeOutExpo',
speed:2000,
prev:'.prev',
next:'.next',
timeout:0,
pagerAnchorBuilder: function(idx, el) {
return '<a href="#" title="Slides"></a>';
},
});
$('#s1').cycle({
pager:'#pager1'
});
$('#s2').cycle({
pager:'#pager2'
});
答案 0 :(得分:0)
编辑:没有正确阅读问题。你去吧
$('.slideshow').each(function () {
var pager = $(this).closest('.work_slideshow').find('.pager');
$(this).cycle({
fx: 'fade',
easing: 'easeOutExpo',
speed:2000,
timeout:0,
pager: pager,
pagerAnchorBuilder: function(idx, el) {
return '<a href="#" title="Slides"></a>';
},
});
});
这样的东西?
对于prev和next,我认为手动绑定prev和next按钮会更有效。
$('.slideshow_container').on('click','.controls .prev',function (e) {
e.preventDefault();
$(this).closest('.work_slideshow').find('.slideshow').cycle('prev');
});
$('.slideshow_container').on('click','.controls .next',function (e) {
e.preventDefault();
$(this).closest('.work_slideshow').find('.slideshow').cycle('next');
});
基本上有一个单击处理程序用于所有next / prev按钮并使用.cycle('prev')和.cycle('next')手动访问循环插件
如果你想要
,你甚至可以将它缩小到只有一个点击处理程序$('.slideshow_container').on('click','.controls a',function (e) {
e.preventDefault();
if ($(this).hasClass('next') {
$(this).closest('.slideshow').cycle('next');
} else {
$(this).closest('.slideshow').cycle('prev');
}
});