如何使用jQuery在div状态中切换复选框?

xpcnnkqh  于 2022-12-18  发布在  jQuery
关注(0)|答案(2)|浏览(260)
<table>
 <tbody>
    <tr>
     <td>
       <span>A_Group</span>
        <input type="hidden" value="1" id="ContentPlaceHolder1_rptFleet_hiddenFleetID_0" name="ctl00$ContentPlaceHolder1$rptFleet$ctl00$hiddenFleetID">
     </td>
     <td>
       <span name="chkGroupName">
        <input type="checkbox" onclick="jqCheckAll3(ContentPlaceHolder1_rptFleet_chkFleetName_0,1 );" name="ctl00$ContentPlaceHolder1$rptFleet$ctl00$chkFleetName" id="ContentPlaceHolder1_rptFleet_chkFleetName_0">
        <label for="ContentPlaceHolder1_rptFleet_chkFleetName_0">Select All</label>
       </span>
    </td>
   </tr>
   <tr>
    <td>
      <div id="1"><table cellspacing="5" cellpadding="5" id="ContentPlaceHolder1_rptFleet_chkListDevice_0">
         <tbody>
           <tr>
               <td>
                   <input type="checkbox" value="1" name="ctl00$ContentPlaceHolder1$rptFleet$ctl00$chkListDevice$0" id="ContentPlaceHolder1_rptFleet_chkListDevice_0_0_0">
                   <label for="ContentPlaceHolder1_rptFleet_chkListDevice_0_0_0">name 2</label>
               </td>
               <td>
                  <input type="checkbox" value="2" name="ctl00$ContentPlaceHolder1$rptFleet$ctl00$chkListDevice$1" id="ContentPlaceHolder1_rptFleet_chkListDevice_0_1_0">
                  <label for="ContentPlaceHolder1_rptFleet_chkListDevice_0_1_0">name 4</label>
               </td>
               <td>
                   <input type="checkbox" value="3" name="ctl00$ContentPlaceHolder1$rptFleet$ctl00$chkListDevice$2" id="ContentPlaceHolder1_rptFleet_chkListDevice_0_2_0">
                   <label for="ContentPlaceHolder1_rptFleet_chkListDevice_0_2_0">name 4</label>
               </td>
             </tr>
         </tbody>
        </table>
       </div>
      </td>
     </tr>
    </tbody>
</table>

function jqCheckAll3(id, pID) {
$("#" + pID + " :checkbox").attr('checked', $('#' + id).is(':checked'));
}

我想在用户点击复选框全选时选中/取消选中div=1内的所有复选框。

w80xi6nr

w80xi6nr1#

您的ID需要引用,这:

onclick="jqCheckAll3(ContentPlaceHolder1_rptFleet_chkFleetName_0,1 );

需要:

onclick="jqCheckAll3('ContentPlaceHolder1_rptFleet_chkFleetName_0', '1');

还有其他问题,比如id="1"在HTML 4中无效,但是缺少引号会引发脚本错误,这是您当前的问题。
一个更简单的方法是通过CssClass为该复选框指定一个类,例如class="checkAll",然后您可以执行以下操作:

<script type="text/javascript">
$(function() {
  $("input.checkAll").change(function() {
    $(this).closest("tr").next().find(":checkbox").attr("checked", this.checked);
  });
});
</script>


那么这一组代码适用于页面中的所有这些情况(假设标记/布局相同)。

aiazj4mn

aiazj4mn2#

我会把这个放在一起有点不同。如果我理解你的问题,你是试图要么选中所有复选框或取消选中所有复选框的基础上,一个单一的复选框(选择所有一个)。
首先,正如Nick所指出的,您不应该使用“1”作为div的ID,而且您还可以使用单个选择语句来获取任何特定div的所有复选框,就像这样...

//notice I changed the name of the div to myDiv
var isChecked = $(this).attr('checked');
$('#myDiv input:checkbox').attr('checked', isChecked);

这将选择div by id,然后是任何复选框输入,我得到“select all”复选框的选中值(在onclick事件中调用),并使用该值设置复选框的值。
我也会将事件的连接移到document.ready事件中,而不是在标记中进行函数调用,但这只是更多的偏好。
下面是jsfiddle中所有功能的链接
希望这能帮上忙...

相关问题