Jquery问题,用于将行从一个表添加到另一个表

时间:2012-05-18 22:37:52

标签: jquery append tablerow

我有2个表,我想根据使用复选框选择的行,从一个表添加行到另一个表,它将行从一个表添加到另一个表,但它不是根据行添加,而是基于单元格,这是我正在使用的: 当单击按钮时,它会循环遍历所有检查的行,并删除第一个单元格,即复选框,并将一行中包含的其余单元格添加到下一个表格中,我假设它会将生成的单元格包装到行中,但是事实并非如此,因为当我选择多行时,它会直接附加到最后一行最后一行的末尾。

$("#btnAddStories").click(function () {
            $checkedStories = $("#dnn_TopStories_grdTopStoriesSearch input[type=checkbox]:checked");
            $.each($checkedStories, function (index, item) {
                $row = $(this).closest("tr").clone().find("td:not('.firstCell')").remove();
                $('#tblTopstories tbody').append($row);
            });
        });

enter image description here

1 个答案:

答案 0 :(得分:1)

完全改变答案,因为我以前的答案实际上没有回答你的问题!

问题在于,当您设置$row时,您只调用该行中的单元格,当您执行.find()

时会发生这种情况

为了使其正常工作,您需要将附加内容更改为:

$('#tblTopstories tbody').append($('<tr/>', {html: $row});

它的作用是创建<tr></tr>并将html内容设置为$row的内容

为了明确您的代码,我将$row的名称更改为$cells,但这只是个人偏好。

此外,当您点击#btnAddStories元素时会出现潜在问题,因此我会将.click()更改为.on('click')并在开头添加.off('click')以防止出现点击次数。 (有时事件会在第一次点击时触发一次,在第二次点击时触发两次等,在分配事件之前调用.off()会阻止事件处理程序被多次应用,[这通常是在事件处理程序被分配到内部时功能])

$("#btnAddStories").off('click').on('click', function(){
  ...
})