我有两个包含行的表。我有一个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>
有什么帮助吗?
最佳答案
如果目标表为空,则不起作用的原因是,您要使用以下语句来定位行:
$('.completed-tasks').last().after(html)
如果没有,则在空集上调用
after
,并且无处放置内容。相反,定位表:
$(".table").append(html);
或者理想情况下,在您的标记中,在表中添加
tbody
,然后将其定位为:$(".table tbody").append(html);
旁注:我不会调用包含jQuery对象且其中带有
tr
元素的变量html
,这具有误导性。它不是HTML,而是一个对象。 :-)