1

运行此代码时,每次单击“#right”时,#slide 都会增加 2 而不仅仅是 1...因此,例如,如果总共有 6 个元素,我将获得第 1、第 3 和第 5 个元素。

    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),得到正确的结果,但我想动态地做到这一点..

谢谢

4

1 回答 1

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

});
于 2013-06-23T08:42:51.597 回答