如何轻松地从表中添加/删除单元格(移动现有单元格)

时间:2015-10-18 20:02:52

标签: html css html5 html-table cell

我想要一个表自动将单元格对齐为每行两个,这意味着如果添加/删除单元格,单元格将变为每行两个(如果单元格总数为奇数,则最后一行中有一个单元格)。

示例:

<table>

<tr>
<td>old1</td> <td>old2</td>
</tr>


<tr>
<td>old3</td> <td>old4</td>
</tr>

</table>

对此:

<table>

<tr>
<td>NEW</td> <td>old1</td>
</tr>


<tr>
<td>old2</td> <td>old3</td>
</tr>


<tr>
<td>old4</td>
</tr>

</table>
  

请注意自动添加的

2 个答案:

答案 0 :(得分:3)

我将向您展示三种方法来实现您的需求,

  • 使用flex(仅限现代浏览器)
  • 使用 inline-table 单元格高度有问题,但可用作排序后备)
  • 使用标准<table> (所有浏览器!)

使用CSS3的FLEX

.table{
  display: flex;
  flex-wrap: wrap;
}
.cell{
  width:50%;
  background:#ddd;
}
<div class="table">
  <div class="cell">NEW</div>
  <div class="cell">OLD1</div>
  <div class="cell">OLD2</div>
  <div class="cell">OLD3<br>new line</div>
  <div class="cell">OLD4</div>
</div>

使用inline-table(单元格高度问题)

display: table;表示父元素和
内部DIV的display: inline-table

.table{
  display:table;
}
.cell{
  display:inline-table;
  width:50%;     /* With percentage you simulate "how-many-per-Row" */
  background:#ddd;
}
<div class="table">
  <div class="cell">NEW</div>
  <div class="cell">OLD1</div>
  <div class="cell">OLD2</div> <!-- Works but notice this cell height  -->
  <div class="cell">OLD3<br>new line</div> 
  <div class="cell">OLD4</div>
</div>

你可以使用inline-table作为旧浏览器的后备 - 它不是完全相同的结果,但没有JavaScript,它是你能得到的最好的。

查看有关display属性的规范:https://developer.mozilla.org/en-US/docs/Web/CSS/display

使用<table><tr><td>以及JavaScript(jQuery)

如果你想坚持使用好的'ol table元素,你可以使用“一点点”jQuery。
在这种情况下,它有点复杂(参见代码注释):

jQuery(function($){ // DOM is now ready

  var $table = $("table"); // Get your table
  var maxRowCells = 2;     // only 2-per-Row
  var counter = 0;         // just a dummy counter

  function prependNewCell(){

    var $newCell = $("<td/>", {html: "NEW"+(++counter)});

    // Is the last row full?
    if($table.find("tr:last td").length == maxRowCells){
      // If true, append a new TR to TABLE to shift TD's to
      $table.append( $("<tr/>") ); 
    }


    // Shift all last TD's to the next row:
    $table.find("tr:not(:last)").each(function(){
      var $tdLast = $(this).find("td").last();
      $(this).next("tr").prepend( $tdLast );
    });

    // Finally. Prepend the new TD element to the first TR
    $table.find("tr").first().prepend( $newCell );

  }

  $("button").on("click", prependNewCell);

});
td{
  width:50%;
  background:#ddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>ADD NEW CELL ON TOP</button>

<table>
  <tr>
    <td>OLD1</td>
    <td>OLD2</td>
  </tr>
  <tr>
    <td>OLD3</td>
    <td>OLD4</td>
  </tr>
</table>

答案 1 :(得分:-2)

table {
   empty-cells: hide;      
}