我尝试使用javascript函数insertAfter和insertBefore,但是我尝试使用insertAfter和insertBefore 2元素。
例如,考虑下面的HTML
<table>
<tbody>
<tr>
<td>
Item 1
</td>
<td>
<div class="moveUpDown">
<div class="up">
</div>
<div class="down">
</div>
<div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td>
1
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
Item 2
</td>
<td>
<div class="moveUpDown">
<div class="up">
</div>
<div class="down">
</div>
<div>
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td>
1
</td>
</tr>
</table>
</td>
</tr>
</table>然后我有了这个javascript代码片段
var row = $(this).parents("tr:first");
if ($(this).is(".up")) {
row.insertBefore(row.prev());
} else {
row.insertAfter(row.next());
}基本上,当调用Up类时,前一行被上移,而当Down类被调用时,当前行被下移一行。
我想要做的是,将这些行上移/下移2行...这意味着像row.prev()、.prev()或row.next()、.next()之类的东西,但是这似乎不起作用。
有什么简单的方法可以解决这个问题吗?
谢谢,如果有任何帮助/建议,将不胜感激。
发布于 2013-01-17 01:44:28
往上走
row.prev().prev().before(row)往下走
row.next().next().after(row)显然tr必须存在,prev/next必须存在
注意:您将缓存行作为第一个tr元素,因此每次更改第一个tr元素时,row都会发生变化
监听事件
$("table").on("click","tr > td > span.moveup", function() {
var row = $(this).parent().parent();
if (row.prev().prev().get(0)) row.prev().prev().before(row)
})https://stackoverflow.com/questions/14364433
复制相似问题