检查动态生成的复选框

时间:2013-01-07 12:34:02

标签: javascript jquery html

我动态生成复选框,如下所示:

entries.each(function()
{
    if($(this).find('parentcategoryid').text() == 0)                
    {
        xmlArr += '<span><input type="checkbox" data-mini="true" name="category'+$(this).find('categoryid').text()+'" id="checkbox'+$(this).find('categoryid').text()+'" class="techAreasCheckBox" style="margin-top: 5px;"/><label class="techAreasLabel">'+$(this).find('categoryname').text()+'</label></span><br>'; 
    } 
    else
    {
        xmlArr;
    }                   
}); // Entries.Each function

说明生成的复选框的名称如下:category1,category2,category3,category8,category10,category54,category55,category56,category,59,category62,category132,category133。

另外,我有一个包含4个数字的数组:2,54,8,10 ......

我想检查名称属性以数组中的这些数字结尾的复选框。我该怎么办?

注意:这些是DYATICMICALLY GENERATED复选框。

2 个答案:

答案 0 :(得分:1)

使用jQuery.each()遍历您的数字数组,然后选择id等于category-X的元素(其中X是当前数字):

$.each(numbers, function(i, num) {
    $('#category-' + num).prop('checked', true);
});

或者,如果您只想在创建元素时执行此操作,则可以在适当的时候将checked属性添加到HTML中。

答案 1 :(得分:1)

要选中复选框,您需要做的就是按照here所述添加checked属性。

以下是一个解决方案。首先,您希望存储Id而不是每次都查找它,因为它更快。其次,我使用$ .inArray函数来确定类别是否在包含应该检查的数字的数组中。最后,我使用三元组来添加checked属性。

var numberArray = [2, 54, 8, 10];

entries.each(function() {
     if($(this).find('parentcategoryid').text() == 0) {
          var categoryId = $(this).find('categoryid').text();
          var categoryInArray = $.inArray(categoryId, numberArray) !== -1;

          xmlArr += '<span><input type="checkbox" data-mini="true" name="category'+categoryId+'" id="checkbox'+categoryId+'" class="techAreasCheckBox" style="margin-top: 5px;"' + categoryInArray ? ' checked="checked" ' : '""/><label class="techAreasLabel">'+$(this).find('categoryname').text()+'</label></span><br/>'; 
     }
}); // Entries.Each function

或者你可以使用另一个if语句。

entries.each(function() {
     if($(this).find('parentcategoryid').text() == 0) {
          var categoryId = $(this).find('categoryid').text();
          var categoryInArray = $.inArray(categoryId, numberArray) !== -1;

          if(categoryInArray) {
          xmlArr += '<span><input type="checkbox" data-mini="true" name="category'+categoryId+'" id="checkbox'+categoryId+'" class="techAreasCheckBox" style="margin-top: 5px;" checked="checked"/><label class="techAreasLabel">'+$(this).find('categoryname').text()+'</label></span><br/>'; 
          } else {
          xmlArr += '<span><input type="checkbox" data-mini="true" name="category'+categoryId+'" id="checkbox'+categoryId+'" class="techAreasCheckBox" style="margin-top: 5px;"/><label class="techAreasLabel">'+$(this).find('categoryname').text()+'</label></span><br/>'; 
          }
     }
}); // Entries.Each function