Javascript 复选框以选择表中的所有行

Javascript 复选框以选择表中的所有行,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,我有一张桌子在桌子里面。基本结构如下 <input type="checkbox" name="CheckAll" id="CheckAll"/> <b>Click to select all Option Values</b> <table class="Parent"> <tr> <td><input type="checkbox" id="Parent">Parent1</td>

我有一张桌子在桌子里面。基本结构如下

<input type="checkbox" name="CheckAll" id="CheckAll"/> <b>Click to select all Option Values</b>
<table class="Parent">
  <tr>
     <td><input type="checkbox" id="Parent">Parent1</td>
     <td><table class="Children">
        <tr><td><input type="checkbox" id="Child">Child1</td></tr>  
        <tr><td><input type="checkbox" id="Child">Child2</td></tr>
        <tr><td><input type="checkbox" id="Child">Child3</td></tr>
     <td>
  </tr>
  <tr>
     <td><input type="checkbox" id="Parent">Parent2</td>
     <td><table class="Children">
        <tr><td><input type="checkbox" id="Child">Child1</td></tr>  
        <tr><td><input type="checkbox" id="Child">Child2</td></tr>
     <td>
  </tr>
现在,我尝试在选择父对象之一时选择所有子对象。假设我没有权限访问视图中的父id。如何仅访问与正在更改的复选框相邻的表?

试试这个

$(this).parent().next('td').find(':checkbox').prop('checked', this.chekced);

作为旁注,您有多个相同id的元素,即
Parent
,这是错误的。您必须有唯一的ID。您可以使用class
Parent

来代替提供相同的id

$(this).parent().next('td').find(':checkbox').prop('checked', this.chekced);

作为旁注,您有多个相同id的元素,即
Parent
,这是错误的。您必须有唯一的ID。您可以使用class
Parent

而不是提供相同的id,您可以通过针对下一个TD,然后是它包含的表来实现这一点。
请注意,您必须将父项、子项等更改为类,因为您不能有重复的ID

$('.Parent[type=checkbox]').on('change', function() {
    $(this).closest('td')
           .next('td')
           .find('table input[type=checkbox]')
           .prop('checked', this.checked);
});

您可以通过瞄准下一个TD,然后选择它包含的表来实现这一点。
请注意,您必须将父项、子项等更改为类,因为您不能有重复的ID

$('.Parent[type=checkbox]').on('change', function() {
    $(this).closest('td')
           .next('td')
           .find('table input[type=checkbox]')
           .prop('checked', this.checked);
});


相同的ID?????????无效标记…;)我能给出的最好的
id
是父对象本身的名称。将de id属性更改为class
parent
,您可以通过
选择。parent[type=checkbox]
@Joaquinglez:我会将其更改为class。。并使用adeneo的回答相同的ID?????????无效标记…;)我能给出的最好的
id
是父对象本身的名称。将de id属性更改为class
parent
,您可以通过
选择。parent[type=checkbox]
@Joaquinglez:我会将其更改为class。。用adeneo的回答如果我把父母的名字作为身份证怎么办?行吗?在这种情况下,我应该在jquery中写些什么呢?您可以使用ParentYes类,而不是提供相同的id。我把它改成了课堂。谢谢你的回答如果我把父母的名字作为身份证怎么办?行吗?在这种情况下,我应该在jquery中写些什么呢?您可以使用ParentYes类,而不是提供相同的id。我把它改成了课堂。谢谢你的回复,关于你关于ID的说明,如果你知道你创建了无效的html,晚上还可以睡觉的话,你可以有副本。您可以更改选择器以处理重复项(我相信如果您使用“attribute equals”选择器指定id,它将工作,即使#id选择器不工作)。当然,上课是最好的选择。(我只是把注释放在上面,因为有时为项目编写JS的人不允许更改其他人创建的html。)@nnnnnn-这是真的,重复ID通常不会破坏任何东西,它只是无效的,就像span上的
href
和其他许多可以做的事情
$('[id=Parent]')
将获取所有元素,只是
getElementById
仅获取第一个元素,当id作为选择器传递时,jQuery也在内部使用第一个元素。当然,如果可以更改HTML,那么使用类是更好的选择。关于你关于ID的注释,如果你仍然可以在晚上睡觉时知道你创建了无效的HTML,那么你可以有重复的。您可以更改选择器以处理重复项(我相信如果您使用“attribute equals”选择器指定id,它将工作,即使#id选择器不工作)。当然,上课是最好的选择。(我只是把注释放在上面,因为有时为项目编写JS的人不允许更改其他人创建的html。)@nnnnnn-这是真的,重复ID通常不会破坏任何东西,它只是无效的,就像span上的
href
和其他许多可以做的事情
$('[id=Parent]')
将获取所有元素,只是
getElementById
仅获取第一个元素,当id作为选择器传递时,jQuery也在内部使用第一个元素。当然,如果可以更改HTML,那么使用类是更好的选择。