运行此代码时,每次单击'#right'时,#slide都会增加2而不是1 ...所以例如,如果有总数,我会获得第1,第3和第5个元素6个元素。
var present=2;
var total_slide=document.getElementById("slider").childElementCount;
$("#right").click(function()
{
for(i=1;i<=total_slide;i++) {
$("#slide"+i).css("display","none"); // hide all elements
}
$('#slide'+present).css("display","block"); // the problem : display
// only the present element
// (gets incremented by 2 )
present=(present+1)%total_slide;
});
但是如果我使用1,2,3等例如:('#slide'+ 2)代替('#slide'+ present),得到正确的结果,但我想动态地这样做.. < / p>
感谢
答案 0 :(得分:2)
不需要执行for循环,jQuery已经返回了数组中元素的集合。
你只需要预先增加并“模块化”(%
)你的计数器。
http://jsbin.com/uhiyew/1/edit
var present=2;
var $childrens = $("#slider > *");
var total_slide = $childrens.length;
$childrens.eq(present).show();
$("#right").click(function(){
$childrens.hide() // hide all elements
.eq(++present%total_slide).show(); // show desired
});