jquery循环添加两次

时间:2013-06-23 08:39:05

标签: jquery css

运行此代码时,每次单击'#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>

感谢

1 个答案:

答案 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

});