jQuery将表行移动到下一个分配了类

时间:2013-03-05 20:40:07

标签: javascript jquery

我有一个任务表:

<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(),但这似乎不适用于类选择器。

2 个答案:

答案 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');
}