2011-07-15 28 views
7

Tôi muốn thay đổi thứ tự của hai hàng trong một bảng.jQuery: thay đổi thứ tự của hai hàng của một bảng

tôi có mã này:

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()); 

Đó là in này:

<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>​ 

Bất kỳ ý tưởng?

Trân

Javi

Trả lời

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

row.insertAfter(row.next()); 

Ví dụ:http://jsfiddle.net/hkkKs/

Phụ thuộc vào cái nào bạn đang nhắm mục tiêu. Nếu người đầu tiên có trình xử lý nhấp chuột, thì bạn cần mã ở trên.

Ngoài ra, phương pháp closest()[docs] là cách an toàn hơn để nhắm mục tiêu tổ tiên <tr>. Đó có thể là vấn đề.

Nếu bạn muốn nó ngược lại, mã của bạn sẽ hoạt động, nhưng một lần nữa, hãy sử dụng .closest() để thay thế.

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

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

Ví dụ:http://jsfiddle.net/hkkKs/1/

0

Hãy thử điều này

$("tableSelector").append($("tableSelector").find("tr:first")); 
Các vấn đề liên quan