更新的代碼看到所有其他的例子之後,以及他們是如何做不大按預期工作,我決定做一個有效的工作。
Here's the example | With effects |代碼
var $tbody = $("table tbody");
var last_position = -1;
$("input").click(function(){
var $row = $(this).closest("tr"),
$first_row = $tbody.find("tr:first-child"),
$trs = $tbody.find("tr");
if($row.index() == $first_row.index()){
if(last_position > 0){
$trs.eq(last_position).after($row);
last_position = -1;
}
return;
}else if(last_position > 0){
$trs.eq(last_position).after($first_row);
}
$tbody.find("input").not(this).attr("checked", false);
last_position = $row.index();
$tbody.prepend($row);
});
有兩種類型的操作你描述
- 用戶點擊輸入的情況下不第一排,第一排向後移動,該行移動到頂部
- 用戶單擊第一行輸入,該行已被移動,第一行移回
當用戶點擊輸入時,我們需要知道它在移動之前的位置,所以我們將存儲最後一個位置。我們給它的值爲-1,因爲我們需要一個默認值,這意味着所有行都是它們原來的位置。
var last_position = -1;
然後我們定義我們將使用
3210
然後我們檢查它是否是被點擊第一行,並重置last_position如果它是變量。我們還要確保最後一個位置還沒有重置或位於第0位,因爲在這種情況下它不應該移動。
if($row.index() == $first_row.index()){
if(last_position > 0){
$trs.eq(last_position).after($row);
last_position = -1;
}
return;
}else if(last_position > 0){
$trs.eq(last_position).after($first_row);
}
最後,我們取消選中所有其他框,將最後一個位置更新到該行,然後將其放在頂部。
$tbody.find("input").not(this).attr("checked", false);
last_position = $row.index();
$tbody.prepend($row);
更新我answerso它檢查FIRSTROW – 2012-03-14 10:06:16