我有一个任务表:
<table>
<tr class="open">
<td>Some task 1</td>
</tr>
<tr class="open">
<td>Some task 2</td>
</tr>
<tr class="open">
<td>Some task 3</td>
</tr>
<tr class="closed">
<td>Some task 4</td>
</tr>
<tr class="closed>
<td>Some task 5</td>
</tr>
</table>
任务按打开然后关闭列出。当我将任务标记为已关闭时,我想将该行移动到第一个已关闭的任务之上。例如,如果我将“某个任务1”设置为已关闭,我想将该行移动到“某个任务4”上方,而不是其他打开的任务。
最好的方法是什么?
我尝试过使用.closest(),但这似乎不适用于类选择器。
答案 0 :(得分:2)
如果要移动$tr
行:
$('tr.open').last().after($tr);
或包含班级更新的一行:
$tr.insertAfter('tr.open:last').removeClass('open').addClass('closed');
答案 1 :(得分:1)
如果可能没有关闭:
function onClosed($newlyClosedElement){
if ($('.closed').length){
$newlyClosedElement.insertBefore($('.closed').first());
}
else{
$newlyClosedElement.insertAfter($('.open').last());
}
$newlyClosedElement.removeClass('open').addClass('closed');
}