如何选择由二维数组表示的所有复选框?

时间:2011-05-12 02:29:22

标签: javascript jquery


我有一个问题div,看起来像这样:

<div  class="Q">
<div id="Q1"><span>1. </span>Which of the following have the same meaning?</div>
<div class="A"><input type="checkbox"  id="Q1A1Correct" /><input type="checkbox" id="Q1A1User" class="UserA"/><span id="Q1A1Text">String</span></div> 
<div class="A"><input type="checkbox"  id="Q1A2Correct" /><input type="checkbox" id="Q1A2User" class="UserA"/><span id="Q1A2Text">string</span></div>
<div class="A"><input type="checkbox" id="Q1A3Correct" /><input type="checkbox" id="Q1A3User" class="UserA"/><span id="Q1A3Text">Integer</span></div>
<div class="A"><input type="checkbox"  id="Q1A4Correct" /><input type="checkbox" id="Q1A4User" class="UserA"/><span id="Q1A4Text">int</span></div>
</div>

我还有一个二维数组,表示每个问题的类型,它是正确的答案,例如

var correctAnswers=[["multipleAnswer","1","2"],["multipleAnswer","2","3"]];  

表示问题1和2(数组中的前两个元素)是多个答案问题(我们假设这是唯一的答案),问题1的正确答案是1和2,问题2的答案是2和3。
现在我需要检查每个正确答案的复选框(即问题1 - Q1A1CorrectQ1A2Correct)。
我设法做了一个特定的问题:

    var correctAs={};
    correctAs.Q1 = ["checkbox","1","2"];

    $('#checkAs').click(function(){
        $.each(correctAs.Q1,function()
        { 
            $("#Q1A"+this+"Correct").attr('checked', true);
        }); //mark correct As according to array above            

});

但我无法概括我的代码,以便它可以使用二维数组。

所以我的问题是 - 如何检查阵列中所有问题的所有正确答案? (改变阵列的构建方式是一个选项,如果它会有所帮助)

感谢您的时间

1 个答案:

答案 0 :(得分:3)

var correctAnswers = [["multipleAnswer","1","2"], ["multipleAnswer","2","3"]];

$('#checkAs').click(function(e) {
    for (var i = 0, len = correctAnswers.length; i < len; i++) {
        for (var j = 0, ln = correctAnswers[i].length; j < ln; j++) {
            if (!isNaN(Number(correctAnswers[i][j]))) {
                $('#Q' + (i+1) + 'A' + correctAnswers[i][j] + 'Correct')
                    .attr('checked', true);
            }
        }
    }
});

Demo →