2015-08-03 100 views
1

我有两个包含行的表。我有一个JavaScript函数应该将表格行移入第二个表格。到目前为止,我的行增加正在执行Jquery方法closest("tr")。它似乎只在每个表格至少有一行时才起作用。当任何表格为空时,它都不起作用。如何使用jQuery将表行转移到另一个表中?

代码,使行移动。

$(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> 

任何帮助吗?

回答

3

的原因,如果目标表是空的它不工作是你与喜欢的语句定向行:

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

如果没有,你在一个空集调用after并且无处可放内容。

相反,目标表:

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

或理想情况下,你的标记,在表中添加一个tbody和目标是:

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

附注:我不会不要调用包含一个带有tr元素的jQuery对象的变量html,这是令人误解的。它不是HTML,它是一个对象。 :-)

+0

好吧,但我怎么区分两个表?我可以在tbody内输入班级吗? –

+0

@BillyLogan:当然,或者每个桌子上有一个单独的类,然后是上面的选择器。 –

1

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

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

它没有改变任何东西 –

相关问题