运行此代码时,每次我单击“#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),得到正确的结果,但我想动态地这样做..
谢谢
最佳答案
无需执行 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
});
关于jquery 循环添加两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17259019/