当下一行的单元格填充位置时,删除表单元格
Remove table cell while cells from next rows fill the place
我有一个表格,每行有固定数量的单元格,通过单击每个单元格,它被删除。
我想要的是单元格的浮动和填充的地方,所以表格从最后一行的结束缩小(而不是每一行分开)。如果表是这样的
A ... B ... C ... D
E ... F ... G ... H
I ... J ... K ... L
如果去掉C
,结果如下:
A ... B ... D ... E
F ... G ... H ... I
J ... K ... L
jsfiddle
$('td').on('click', function() {
$(this).remove();
//re-arrange table
});
我能想到的唯一方法是将所有的tds放在一个数组中,清空表并根据可用的tds创建一个新的表。这是可行的方法吗?还是有更有效的方法?
尝试此代码在删除td
后重新排列下一个所有tr > td
,这将只需要所有下一个tr
首先td
并移动到已删除的td tr部分…它将只在所有可用的tr次下运行,所以最好在删除td
后重新映射整个表
var tbl = $('#num_tbl');
var tr = $('<tr/>');
for (var i = 1; i < 102; i++) {
if ((i - 1) % 10 == 0) {
tbl.append(tr);
tr = $('<tr/>');
if ((i - 1) / 10 % 2 == 1)
tr.addClass('odd');
}
var td = $('<td/>');
td.text(i);
td.attr("data-num", i);
tr.append(td);
}
$('td').on('click', function() {
var $_thisTR = $(this).closest('tr');
$.when($(this).remove()).then(function() {
$_thisTR.next('tr').find('td:first').detach().appendTo($_thisTR);
$_thisTR.next('tr').nextAll('tr').each(function(i, o) {
$('>td:first', o).detach().appendTo($(o).prev());
if (!$('td', o).length) {
$(o).remove();
}
})
})
});
td {
padding: 8px 16px;
}
tr.odd {
background-color: #eeeeee;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<table id="num_tbl"></table>
如果不强制使用表格,可以使用固定宽度的浮动div。
.table-item { float: left: width: 25%; }
相关文章:
- 使用jquery在单击时在单元格中输入值
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 可以'我不明白为什么;t将行和单元格添加到表中
- 如何在Angular中的表的所有单元格中添加链接
- 表中单元格的总和
- ExtJS网格单元格编辑器,防止焦点松动问题
- JointJS-鼠标点击事件触发单元格位置更改事件
- 火狐在表格单元格中绝对位置
- 表单元格(td)相对于表行(tr)的绝对位置
- 当单元格进入编辑模式时,禁止在除一个单元格(选定行中)之外的任何位置单击
- 绘制两个位置之间的单元格
- 使用joint.js更改纸张中每个单元格的位置事件
- Google Scripts从单元格中填充值数组及其位置
- 获取知道位置的表单元格和行
- 通过单击表格单元格中的任何位置来勾选表格单元格中的复选框,并更改该单元格的背景颜色
- JS工具提示在表格单元格中的位置
- 获取选定单元格在Google工作表中的位置,并输出到另一个单元格
- 改变表格单元格的位置
- 当下一行的单元格填充位置时,删除表单元格
- Accordian菜单(单击时)影响图像在下一个表格单元格中的位置