javascript - 使用 jQuery 合并具有特定类的表格单元格

标签 javascript jquery html dom html-table

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

$(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()
    }
  })
})
<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>

以上代码的结果如下。

未合并的结果:

预期结果:

我怎样才能实现这个目标?

最佳答案

试试这个:

$(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>

关于javascript - 使用 jQuery 合并具有特定类的表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524961/

相关文章:

javascript - 如何通过javascript处理JSTL标签

javascript - 使用 jQuery 将 json 值返回到表单字段

javascript - Slick.Grid 不是构造函数

jquery - 关注 ng-repeat 生成的输入

javascript - HTML <div> 高度不随动态内容扩展

javascript - 可以在多数组中命名不同的数组吗?

javascript - 即使有 When Promise 回调金字塔

javascript - 将 Firefox 窗口置于全屏模式

javascript - jQuery 不适用于 ng-repeat 结果

javascript - 在 HTML 页面上将 URL 解析为可读的 json 格式?