我半年前创建了一个jquery画廊(SO社区帮助了我很多因为我对js / jquery不够熟悉)现在我想在这个画廊添加下一个/上一个按钮。我尝试将它与其他画廊结合但没有任何正常工作。
这里是js:
<script type="text/javascript">
function showPic (whichpic) {
if (document.getElementById) {
$('#actimg').fadeOut(170);
setTimeout(function() {
document.getElementById('actimg').src = whichpic.href;
$('#actimg').fadeIn(170);
}, 170);
return false;
} else {
return true;
}
}
</script>
和html:
<img id="actimg" src="" width="600" height="400" alt="main" />
<a onclick="return showPic(this)" href="example_1.jpg">
<img height="39px" width="58px" src="example_1.jpg" alt="thumbnail" />
</a>
<a onclick="return showPic(this)" href="example_2.jpg">
<img height="39px" width="58px" src="example_2.jpg" alt="thumbnail" />
</a>
<a onclick="return showPic(this)" href="example_3.jpg">
<img height="39px" width="58px" src="example_3.jpg" alt="thumbnail" />
</a>
图库看起来像http://www.rafsimons.com/collections/aw-11/,但它不是闪光灯,现在我没有下一个/上一个按钮。在此先感谢您的帮助。
答案 0 :(得分:1)
首先为所有拇指(<a>
标签)添加一个类属性,以便可以从jQuery轻松引用它们:
<a class="gallery_item" onclick="return showPic(this)" href="example_1.jpg">
<img height="39px" width="58px" src="example_1.jpg" alt="thumbnail" />
</a>
...
我们需要一种方法来了解哪一个是当前图像。我们可以将该信息存储在<a>
标记本身的自定义属性中。为此,修改showPic函数,如:
function showPic (whichpic) {
if (document.getElementById) {
$('.gallery_item').removeAttr('current'); // <- remove 'current' attribute from all thumbs
$('#actimg').fadeOut(170);
setTimeout(function() {
document.getElementById('actimg').src = whichpic.href;
$('#actimg').fadeIn(170);
$(whichpic).attr('current', '1'); // <- set this one as current
}, 170);
return false;
} else {
return true;
}
}
现在为next / prev按钮添加2个链接,并将它们放在适当的位置。将他们的ID设为“下一个”和“上一个”
<a href="#" id="prev" onclick="return nextPic()">Prev</a>
<a href="#" id="next" onclick="return prevPic()">Next</a>
现在添加2个js函数nextPic()和prevPic(),如:
function nextPic() {
var current = null;
$('.gallery_item').each(function() {
if($(this).attr('current')=='1') {
current = $(this);
return false;
}
});
if(current!=null) {
if(current.parent().next().length!=0) {
showPic(current.parent().next().find('.gallery_item')[0]); // <- show next pic
}
else {
showPic($('.gallery_item:first')[0]); // if no next pic, show first pic
}
}
return false;
}
function prevPic() {
var current = null;
$('.gallery_item').each(function() {
if($(this).attr('current')=='1') {
current = $(this);
return false;
}
});
if(current!=null) {
if(current.parent().prev().length!=0) {
showPic(current.parent().prev().find('.gallery_item')[0]); // <- show next pic
}
else {
showPic($('.gallery_item:last')[0]); // if no next pic, show first pic
}
}
return false;
}
添加此项,默认情况下将第一个图像初始化为当前图像。
$().ready(function() {
$('.gallery_item:first').attr('current', '1');
});