jQuery:更改表的两行的顺序

时间:2011-07-15 20:18:49

标签: 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>​

有什么想法吗?

此致

哈维

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

试试这个

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