Jquery tablesorter-选择父行时包括所有子行

Jquery tablesorter-选择父行时包括所有子行,jquery,each,tablesorter,Jquery,Each,Tablesorter,这似乎是一个足够简单的函数,但出于某种原因,我正在努力使它工作。我有一个带有jquery tablesorter插件的HTML表。每行都有一个复选框作为第一列。默认情况下,所有子行都是隐藏的。当我选中父行上的复选框时,我希望它也将该父行下的子行上的复选框标记为选中。这是我的HTML表格: <table> <thead> <tr> <th>Select</th> <th>Column2<

这似乎是一个足够简单的函数,但出于某种原因,我正在努力使它工作。我有一个带有jquery tablesorter插件的HTML表。每行都有一个复选框作为第一列。默认情况下,所有子行都是隐藏的。当我选中父行上的复选框时,我希望它也将该父行下的子行上的复选框标记为选中。这是我的HTML表格:

<table>
  <thead>
    <tr>
      <th>Select</th>
      <th>Column2</th>
    </tr>
  </thead>
  <tbody>
     <tr class="tablesorter-hasChildRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
     <tr class="tablesorter-childRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
     <tr class="tablesorter-childRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
     <tr class="tablesorter-hasChildRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
     <tr class="tablesorter-childRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
     <tr class="tablesorter-childRow">
       <td><input type="checkbox" class="rowSelector"></td>
       <td>Column 2 Data</td>
     <tr>
  </tbody>
 </table>

谁能告诉我哪里出了问题

下面是工作代码:

$('.rowSelector').change(function() {
  $(this).closest('tr.tablesorter-hasChildRow').nextUntil('tr.tablesorter-hasChildRow').find('input.rowSelector').prop('checked', $(this).prop('checked'));
});

嗯,有点奏效。理想情况下,当手动选择所有较低级别的刻度时,您仍然希望切换较高级别的刻度。

下面是工作代码:

$('.rowSelector').change(function() {
  $(this).closest('tr.tablesorter-hasChildRow').nextUntil('tr.tablesorter-hasChildRow').find('input.rowSelector').prop('checked', $(this).prop('checked'));
});

嗯,有点奏效。理想情况下,当手动选择所有较低级别的标记时,您仍然希望切换较高级别的标记。

HTML存在一些问题。。。请确保在关闭行时使用
。此HTML将创建两行,第一行为空

<tr>
<tr class="tablesorter-hasChildRow">

HTML有一些问题。。。请确保在关闭行时使用
。此HTML将创建两行,第一行为空

<tr>
<tr class="tablesorter-hasChildRow">

例如,您的关闭
tr
标记实际上没有关闭。他们正在打开标签。哎呀!我在重新打字时忘记了他们。感谢您指出:)首先,您的关闭
tr
标记实际上并没有关闭。他们正在打开标签。哎呀!我在重新打字时忘记了他们。谢谢你指出:)这正是我想要做的!非常感谢你。我想我让事情变得比需要的更复杂了。我甚至没有考虑过另一种情况,即当所有子行都被选中时,应该检查父行。谢谢你不仅帮助我让它工作,而且帮助它变得更好!!!这正是我想要做的!非常感谢你。我想我让事情变得比需要的更复杂了。我甚至没有考虑过另一种情况,即当所有子行都被选中时,应该检查父行。谢谢你不仅帮助我让它工作,而且帮助它变得更好!!!莫蒂,救命啊!!哇,这太完美了。我觉得很难改变我接受的答案,因为@rtytgat确实回答了我提出的问题,但这一次肯定更进一步了。我还喜欢添加“父对象不确定”复选框。这是一个非常用户友好的解决方案。非常感谢你!!这可能应该是一个单独的问题,但既然你已经掌握了这一点,我觉得它值得一问。插件是否有一个计算所选父行和子行的函数?我有一个只计算所有行的程序,但当我实现这个程序时,它就搞乱了。我似乎也找不到它变得奇怪的原因。你能给我指一下这方面的文档吗?里面没有任何内置的东西。如果需要,您可以修改上面的代码以添加计数。。。使用
$group.length
获取总行数(父行+子行),或使用
$rows.length
获取子行总数。注意!!哇,这太完美了。我觉得很难改变我接受的答案,因为@rtytgat确实回答了我提出的问题,但这一次肯定更进一步了。我还喜欢添加“父对象不确定”复选框。这是一个非常用户友好的解决方案。非常感谢你!!这可能应该是一个单独的问题,但既然你已经掌握了这一点,我觉得它值得一问。插件是否有一个计算所选父行和子行的函数?我有一个只计算所有行的程序,但当我实现这个程序时,它就搞乱了。我似乎也找不到它变得奇怪的原因。你能给我指一下这方面的文档吗?里面没有任何内置的东西。如果需要,您可以修改上面的代码以添加计数。。。使用
$group.length
获取总行数(父行+子行),或使用
$rows.length
获取子行总数。