我想更改表格中两行的顺序。
我有这段代码:
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>
有什么想法吗?
此致
哈维
答案 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);
});
答案 1 :(得分:0)
试试这个
$("tableSelector").append($("tableSelector").find("tr:first"));