如何使用jquery将表行转移到另一个表中?

时间:2015-08-03 11:24:46

标签: javascript jquery ruby-on-rails

我有两个包含行的表。我有一个javascript函数,应该将表行移动到第二个表中。到目前为止,我的行添加是使用Jquery方法closest("tr")执行的。并且它似乎仅在每个表至少有一行时才起作用。当任何表都是空的时候,它就不起作用了。

代码,使行移动。

$(arg).closest("tr").remove()
html=$(arg).closest("tr")

 if(value){
         complete = true;
         $('.completed-tasks').last().after(html)
       }
       else{
         complete = false;
          $('.incompleted-tasks').first().after(html)
        }

这是第一张表的结构。

  <h3>Completed</h3>
    <table class='table'>

     <% @tasks.complete.each do |task| %>
      <tr class='completed-tasks' id="task_<%= task.id %>">

        <td>
         .
         .
         .
        </td>

     </tr>
    <% end %>

</table>

第二张表:

<h3>Incompleted</h3>
  <table class='table'>

   <% @tasks.incomplete.each do |task| %>
    <tr class='incompleted-tasks' id="task_<%= task.id %>">

     <td>
      .
      .
      .
     </td>

    </tr>
  <% end %>

</table>

任何帮助?

2 个答案:

答案 0 :(得分:3)

如果目标表为空,它不起作用的原因是您要使用以下语句定位行:

$('.completed-tasks').last().after(html)

如果没有,你就是在空集上调用after而且无处可放内容。

相反,定位表:

$(".table").append(html);

或理想情况下,在您的标记中,在表格中添加tbody,然后定位:

$(".table tbody").append(html);

旁注:我不会调用包含j tr元素的jQuery对象的变量html,这会产生误导。它不是HTML,它是一个对象。 : - )

答案 1 :(得分:1)

根据您的代码,您首先从第一个表中删除该行,然后将其复制到其他表中。你应该改为

html=$(arg).closest("tr")
$(arg).closest("tr").remove()