Jquery无限数字数组事件

时间:2012-03-29 17:14:39

标签: javascript jquery

我不确定这是否就是你所说的,但基本上,我正在抓取存储在本地存储中的一个密钥中的城市列表。我用逗号分隔它们,然后使用id的相应值动态选中复选框。现在我想在那里有任意数量的城市,所以我不想像[0],[1]等单独检查这些方框,但是那里有无限的方式来做这个或者其他什么。很抱歉,如果这不清楚..我会在下面发布我的代码,我的代码是检查0-5键的方框,我希望能够做0 - 无限制,可以这么说。任何帮助表示赞赏。

<script type="text/javascript">
            var refreshId = setInterval(function()
                                        {
            var citySplit = localStorage.getItem("city2");

            var myResult = citySplit.split(",");

            $("#"+myResult[0]+"").prop("checked", true);
            $("#"+myResult[1]+"").prop("checked", true);
            $("#"+myResult[2]+"").prop("checked", true);
            $("#"+myResult[3]+"").prop("checked", true);
            $("#"+myResult[4]+"").prop("checked", true);
            $("#"+myResult[5]+"").prop("checked", true);
             }, 6500);

            </script>

4 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点:

注意:所有这些示例均未经过测试。


简单while - 循环 - 0,1,2,3,4

var i = 0,
    len = myResult.length;

while ( i < len ) {
    $( "#" + myResult[i] ).prop("checked", true);
    i++;
}

简单for - 循环 - 0,1,2,3,4

for ( var i = 0, len = myResult.length; i < len; i++ ) {
    $( "#" + myResult[i] ).prop("checked", true);
}

使用jQuery.each

进行回调的

this方法

$.each(myResult, function() {
    $( "#" + this ).prop("checked", true);
}

或 使用jQuery.eacharguments[1]

进行回调的value方法
$.each(myResult, function(key, value) {
    $( "#" + value ).prop("checked", true);
}

while - 从4,3,2,1,0后面循环

var len = myResult.length

while( len-- ) {
    $( "#" + myResult[len] ).prop("checked", true);
}

for - 从4,3,2,1,0后面循环

for( var i = myResult.length; i > 0; i-- )
    $( "#" + myResult[i-1] ).prop("checked", true);

while - 循环弹出数组从4,3,2,1,0后面破坏数组

while( myResult.length ) {
    $( "#" + myResult.pop() ).prop("checked", true);
}

while - 循环移位数组从0,1,2,3,4开始破坏数组

while( myResult.length ) {
    $( "#" + myResult.shift() ).prop("checked", true);
}

???


$.map(myResult, function(value) {
    return "#" + value;
}).each(function() {
    $(this).prop("checked", true);
};

$.map(myResult, function( value ) {
    return $("#" + value);
}).prop("checked", true);

正如您所看到的,有很多方法可以处理数组。

为简单起见,我建议您使用前两种方法中的一种。

jQuery.each方法非常好,因为您在本地范围内获得了数组的键和值。 (key = 0,1,2,3,4,...)(value =曾经myResult[key])。

我们销毁阵列的两个也非常好。但在您理解更简单的方法之前,我不建议您使用这些。我可以想到使用这种方法的情况是你必须加载大量文件或按特定顺序初始化很多函数:

var func1 = function() {
        alert("func1");
    },
    func2 = function() {
        alert("func2");
    },
    func3 = function() {
        alert("func3");
    },
    queue = [func1, func2, func3];

while( queue.length ) {
    (queue.shift())(); 
    // or
    //(queue.pop())();
}

答案 1 :(得分:2)

循环myResult

for (var i = 0; i < myResult.length; i++) {
     $("#"+myResult[i]+"").prop("checked", true);
}

答案 2 :(得分:1)

在常用复选框中添加一个类名,让jQuery一次完成所有工作。

$(".myChecks").prop("checked", true);

答案 3 :(得分:0)

您可以使用城市数组的长度。

 var myResult = citySplit.split(",");
 var upto = myResult.length;
 for(var i =0;i< upto ; i++)
       $("#"+myResult[i]+"").prop("checked", true);