使用jquery取消选中按钮单击时的所有复选框

时间:2011-06-14 10:48:26

标签: javascript jquery

我有这个表,从xml

填充
<table id="tableDg" 
    style="border:#2F5882 1px solid;width:100%;"  cellspacing="1" cellpadding="1"> 

    <thead>
     <tr id="trHead" style="color :#FFFFFF;background-color: #8EA4BB" > 
         <th></th>
         <th width="2%"><input id="chkbHead" type='checkbox'  /></th>
         <th width="10%" align="center" spry:sort="name"><b>Name</b></th> 
         <th width="22%" align="center" spry:sort="host"><b>Host</b></th> 

     </tr>
     </thead>

     <tbody spry:repeat="pv1">   
     <tr class="trOdd"   
     spry:if="({ds_RowNumber} % 2) != 0" onclick="ds1.setCurrentRow('{ds_RowID}');"
        style="color :#2F5882;background-color: #FFFFFF"> 
         <td><input type="hidden" id="path" value="{path}"></input></td>
         <td><input type="checkbox" id="chkbTest" class = "chkbCsm" ></input></td>
         <td width="10%" align="center">&nbsp;&nbsp;<input type="hidden" id="nameText" readonly="true" value="{name}"><a href="#" class="aDg">{name}</a></input></td> 
         <td width="22%" align="center">&nbsp;&nbsp;<input type="hidden" id="nameText" readonly="true" value="{host}">{host}</input></td> 

     </tr> 

     <tr class="trEven" name="trEven" id="trEven"
     spry:if="({ds_RowNumber} % 2) == 0" onclick="ds1.setCurrentRow('{ds_RowID}');"
        style="color :#2F5882;background-color: #EDF1F5;"> 
         <td><input type="hidden" id="path" value="{path}"></input></td>
         <td><input type="checkbox" class = "chkbCsm" ></input></td>
         <td width="10%" align="center">&nbsp;&nbsp;<input type="hidden" id="nameText" readonly="true" value="{name}"><a href="#" class="aDg">{name}</a></input></td> 
         <td width="22%" align="center">&nbsp;&nbsp;<input type="hidden" id="nameText" readonly="true" value="{host}">{host}</input></td> 

     </tr>
     </tbody>
     </table>

按钮点击我正在调用一个函数,在函数内部我正在执行类似下面的操作

$('#tableDg input:checkbox').removeAttr('checked');

但没有运气。请帮忙!!我想取消选中按钮上的所有复选框

6 个答案:

答案 0 :(得分:2)

试试这个:

$('#tableDg input:checkbox').attr('checked',false);

答案 1 :(得分:2)

我会使用$('#tableDg input[type=checkbox]').removeAttr('checked');

  

附加说明:   因为:checkbox是jQuery扩展而不是CSS规范的一部分,使用:checkbox的查询无法利用本机DOM querySelectorAll()方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用[type =“checkbox”]。

但我认为问题不在您使用的代码中,更好地提供单击按钮时执行的脚本

您的复选框似乎没有值和名称属性,如果您在表单中使用它们,我建议您添加它们

同样在1.6中有一个.removeProp('checked'),但带有一个音符

  

注意:请勿使用此方法删除本机属性,例如已选中,已禁用或已选中。这将完全删除属性,一旦删除,就不能再次添加到元素。使用.prop()将这些属性设置为false。

所以你的代码应该是

$('#tableDg input[type=checkbox]').prop('checked', false);

答案 2 :(得分:0)

我使用此代码切换复选框状态:

checked = false;
$('#select_all').click(function() {
  checked = !checked
  $(this).children('input:checkbox').attr('checked', checked);
});

在您的情况下尝试将'checked'设置为false。另外,在firebug / chrome inspect的控制台中尝试相同的操作。

答案 3 :(得分:0)

几乎就像何塞·瓦伦特所说的那样,但你也可以只检查已选中的复选框而不是所有复选框。

$('#tableDg input:checked').attr('checked',false);

答案 4 :(得分:0)

你可能有表格来处理输入,所以你可以使用它:

$('.my-button').click(
    function(){
        $(this).parents('form').find('input:checkbox').removeAttr('checked');
    }
)

答案 5 :(得分:0)

使用Prop而不是attr

$('#tableDg input:checked').prop('checked',false);