jQuery Checkbox - 多次迭代无法正常工作

时间:2013-08-21 08:09:55

标签: jquery

我有一个函数,迭代一个表并检查<td>中的一些复选框,现在这可以多次执行,其中选中的复选框不同。但我的问题是,如果我在一个实例中执行两次步骤,那么选择不正常,表是在一个

<div>
<table> </table>
</div>

复选框的代码

// global
var selectedId  =""


function populate(Id){


if(selectedId != Id){

    selectedId = Id;

    // first uncheck previous selection if any 

    // selective  is the class of check box <td>
    // <td class="selective"><input type="checkbox" name="packId" 
    // value="${pack.packId}"></td>

    $('.selective input:checkbox').each(function () {
      var prevCheckedVal = (this.checked ? $(this).val() :"");
      if(prevCheckedVal != ""){
         $(this).find("input[type=checkbox]").attr("checked", false);
      }
    });

    // now select check boxes for present selection 
    $("tr.allVPClass").each(function() {
       $this = $(this)
       var catId = $this.find("input.IdInVpClass").val();
       if(selectedId == catId){
        $(this).find("input[type=checkbox]").attr("checked", true);
       }
    }); 
}
// open the dialoge
$("#dialog-form").dialog("open");
}

该表填充在多个div中。如果我打开单独的div然后它的工作,但如果我打开一个相同的div两次不选择/检查任何复选框

2 个答案:

答案 0 :(得分:0)

要更改选中状态,您需要使用.prop()代替.attr()

$(this).find("input[type=checkbox]").prop("checked", false);

另请阅读thisprop vs attr

答案 1 :(得分:0)

您应使用.prop()代替.attr()复选框

$(this).find("input[type=checkbox]").prop("checked", true);