Javascript JQuery交换列

Javascript JQuery交换列,javascript,jquery,html,html-table,Javascript,Jquery,Html,Html Table,我需要交换表中的列,但保留列的当前编辑值 这是我的密码: $(this).click(function () { var $td = $(this).closest('td.container'); var $tds = []; $td.closest('tr').children('td').each(function () { $tds.push($(this)); }); for (var i = $td.index() + 1; i < $tds.l

我需要交换表中的列,但保留列的当前编辑值

这是我的密码:

$(this).click(function () {
    var $td = $(this).closest('td.container');
    var $tds = [];
    $td.closest('tr').children('td').each(function () { $tds.push($(this)); });
    for (var i = $td.index() + 1; i < $tds.length; i++)
        $tds[i - 1].html($tds[i].html()).addClass('border');
    $tds[$tds.length - 1].html('').removeClass('border');
});

知道如何解决这个问题吗?

这个问题是因为您将
表的HTML附加到上一个单元格中。HTML不包含用户输入到的
输入
元素的修改后的
属性。要修复此问题,请复制DOM中的元素,而不是它们的HTML

还请注意,您的逻辑可以简化。首先,您不需要
each()
循环,因为您可以将
click()
事件处理程序直接应用于
按钮的集合。您还可以使用jQuery对象本身,而不是通过循环来创建一个无意义的jQuery对象数组,您需要再次循环

$('tblContent按钮')。单击(函数(){
var$container=$(this.closest('td.container');
var$content=$container.next().children()
$container.empty().append($content);
});
.container{
宽度:256px;
填充:8px;
}
.集装箱{
边框:1px纯红;
}

第一栏行吗?
删除我
第2栏OK
删除我
第3栏OK
删除我

你太棒了!您的代码简单而优雅。谢谢分享和帮助。我知道我不应该使用table,但是
div
让我非常头疼,尤其是当我试图在div中“垂直居中”元素时。我不想使用table,但实际上,table是目前对我来说最方便的方式:(
Step to reproduce:
1. Enter some text in textbox in column #3
2. Click on "Delete Button" in column #2
3. You will see the text entered in step #1 will disappear.