我正在尝试用jQuery做一些Gallery-Turn Over脚本。因此我得到了一个阵列 - 比方说13 - 图像:
galleryImages = new Array(
'images/tb_01.jpg',
'images/tb_02.jpg',
'images/tb_03.jpg',
'images/tb_04.jpg',
'images/tb_05.jpg',
'images/tb_06.jpg',
'images/tb_07.jpg',
'images/tb_08.jpg',
'images/tb_09.jpg',
'images/tb_10.jpg',
'images/tb_11.jpg',
'images/tb_12.jpg',
'images/tb_13.jpg'
);
我的画廊看起来像一个网格,一次只显示9张图片。我当前的脚本已经计算了#gallery中li元素的数量,加载了前9个图像并显示它们。 HTML看起来像这样:
<ul id="gallery">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul id="gallery-controls">
<li id="gallery-prev"><a href="#">Previous</a></li>
<li id="gallery-next"><a href="#">Next</a></li>
</ul>
我对jQuery很新,我的问题是我无法弄清楚如何将数组拆分为9个元素,将其作为控制按钮上的链接附加。我需要这样的东西:
$('#gallery-next').click(function(){
$('ul#gallery li').children().remove();
$('ul#gallery li').each(function(index,el){
var img = new Image();
$(img).load(function () {
$(this).css('display','none');
$(el).append(this);
$(this).fadeIn();
}).attr('src', galleryImages[index]); //index for the next 9 images?!?!
});
});
感谢您的帮助!
答案 0 :(得分:1)
一些重要的注意事项:
$(el).append(img)
行移到了更合适的位置。curIndex
是最后一张图片的索引。curIndex+index
,然后通过galleryImages.length对其进行修改,以便循环溢出而不是出错。<li>
中的文字,以便您可以看到正在进行中。答案 1 :(得分:0)
你可以创建一个变量,比如var firstIndex = 0;
来保存当前显示的第一个图像的数组索引。让你的“下一个”按钮递增它,你的“上一个”按钮会根据需要递减它(按1或9或你想要的方式)。将此值添加到代码中的index
。
当然,您需要检查数组边界。
答案 2 :(得分:0)
试试这个:
<html>
<head>
<style>
#gallery-prev, #gallery-next{text-decoration:underline;color:Blue;cursor:pointer;list-style:none;display:inline;padding:5px;}
#gallery li{list-style:none;display:inline;}
</style>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
galleryImages = new Array(
'images/tb_01.jpg','images/tb_02.jpg','images/tb_03.jpg',
'images/tb_04.jpg','images/tb_05.jpg','images/tb_06.jpg',
'images/tb_07.jpg','images/tb_08.jpg','images/tb_09.jpg',
'images/tb_10.jpg','images/tb_11.jpg','images/tb_12.jpg',
'images/tb_13.jpg');
function loadImages(p) {
var startIndex = parseInt($('ul#gallery').attr("startIndex")) + 9 * p;
if (startIndex < 1 || startIndex >= galleryImages.length) return;
$('ul#gallery')
.attr('startIndex', startIndex)
.find("li").children().remove().end()
.each(function(i, el) {
var nextID = startIndex - 1 + i;
if (nextID >= 0 && nextID < galleryImages.length) {
$(this).append($("<img src='" + galleryImages[nextID] + "' alt='image " + (nextID + 1) + "' />"));
}
});
}
$(document).ready(function() {
$('ul#gallery').attr('startIndex', '1');
for (var i = 1; i <= 9; i++)
$('ul#gallery').append("<li></li>");
loadImages(0);
$('li#gallery-prev, li#gallery-next').each(function(i) {
$(this).click(function() {
loadImages(i == 1 ? 1 : -1);
})
});
});
</script>
</head>
<body>
<ul id="gallery"></ul>
<ul id="gallery-controls">
<li id="gallery-prev">Previous</li>
<li id="gallery-next">Next</li>
</ul>
</body>
</html>