2015-08-03 94 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

它沒有改變任何東西 –

相關問題