2016-09-16 73 views
1

我想合併具有相同類別的表格單元格。使用jQuery合併具有特定類的表格單元格

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

的上面的代碼的結果是如波紋管。

結果不合並:

預期結果:

我怎樣才能做到這一點?

+0

你想要的時候要合併的細胞做什麼裏面有他們不同的數據值? – blackpen

+0

你能分享css嗎? –

+0

@ÖzgürErsilCSS在這裏不相關。 –

回答

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>

+0

感謝這是什麼excalty我expectg它是工作很好,但是在腳本代碼中(讓let $ firstRow)下面有一條紅色的線讓Let關鍵字和它顯示語法錯誤時,將鼠標懸停在它上面 – Madhav

+0

@ Ma6139735'let'關鍵字是一個新的JavaScript功能。如果它不工作,請嘗試用'var'替換它。 –

+0

謝謝,實際上,讓我也工作,我只是好奇,因爲它在那裏顯示錯誤,但這個var關鍵字已經解決了那個,真的謝謝 – Madhav