2011-07-15 57 views
7

我想更改表格中兩行的順序。jQuery:更改表格兩行的順序

我有這樣的代碼:

console.log(position.parent().parent().prev()); 
console.log(position.parent().parent()); 
//I expected this line do the work, but no... 
$(this).parent().parent().prev().insertAfter($(this).parent().parent()); 

正在打印此:

<tr>​ 
<td>​Element 1​</td>​ 
<td>​…​</td>​ 
<td>​2008-02-02​</td>​ 
<td class=​"jander" data-pos=​"0" data-category=​"1">​…​</td>​ 
</tr>​ 

<tr>​ 
<td>​Element 2​</td>​ 
<td>​…​</td>​ 
<td>​2007-02-02​</td>​ 
<td class=​"jander" data-pos=​"1" data-category=​"1">​…​</td>​ 
</tr>​ 

任何想法?

問候

哈維

回答

21
var row = $(this).closest('tr'); 

row.insertAfter(row.next()); 

例子:http://jsfiddle.net/hkkKs/

取決於你的目標是哪一個。如果第一個具有點擊處理程序,那麼您需要上面的代碼。

此外,closest()[docs]方法是一種更安全的方法來瞄準祖先<tr>。這可能是問題。

如果你想它相反的方式,你的代碼會工作,但同樣,使用.closest()代替。

$('span').click(function() { 
    var row = $(this).closest('tr'); 

    row.prev().insertAfter(row); 
}); 

實施例:http://jsfiddle.net/hkkKs/1/

0

嘗試此

$("tableSelector").append($("tableSelector").find("tr:first"));