使用jQuery将表单元格与特定类合并

时间:2016-09-16 06:23:35

标签: javascript jquery html dom html-table

我正在尝试合并具有相同类别的表格单元格。

Component.propTypes
$(function () {
  $('table tbody tr').each(function () {
    var colspan = $(this).find('td.row').length
    if (colspan > 1) {
      $(this).find('td.row:first').attr('colspan', colspan)
      $(this).find('td.row:not(:first)').remove()
    }
  })
})

以上代码的结果如下所示。

没有合并的结果:

预期结果:

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

试试这个:



$(function () {
  $('table tr').each(function () {
    let $firstRow
       ,colspan = 0
    $(this).find('td').each(function() {
      if ($(this).hasClass('row')) {
        // Save the first cell with class in $firstRow, remove the rest
        colspan === 0 ? $firstRow = $(this) : $(this).remove()
        // Count the number of cells
        colspan++
      } else if (colspan > 0) {
        // Assign the colspan and reset the counter
        $firstRow.attr('colspan', colspan)
        colspan = 0
      }
    })
    if (colspan > 0) {
      $firstRow.attr('colspan', colspan)
      colspan = 0
    }
  })
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
  <tbody>
    <tr>
      <td>text</td>
      <td class="row">text</td>
      <td class="row">text</td>
      <td>text</td>
      <td>text</td>
      <td class="row">text</td>
      <td class="row">text</td>
      <td class="row">text</td>
    </tr>
    <tr>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
    </tr>
    <tr>
      <td class="row">text</td>
      <td class="row">text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
      <td>text</td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;