Javascript insertAfter&;插入之前

Javascript insertAfter&;插入之前,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我正在使用javascript函数insertAfter和insertBefore,但是我正在尝试insertAfter和insertBefore 2个元素 例如,考虑下面的HTML <table> <tbody> <tr> <td> Item 1 </td> <td>

我正在使用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>
基本上,当调用Up类时,上一行上移,而当调用Down类时,当前行下移一行

我想做的是,将行向上/向下移动2行。。。表示类似于row.prev().prev()或row.next().next()的内容,但这似乎不起作用

有没有简单的办法

谢谢,如果您有任何帮助/建议,我们将不胜感激。

请继续

row.prev().prev().before(row)
下降

row.next().next().after(row)
显然,tr必须存在上一个/下一个必须存在

注意,您正在将行缓存为第一个tr元素,因此每次第一个tr元素更改时,行都会更改

倾听事件

$("table").on("click","tr > td > span.moveup", function() {
  var row = $(this).parent().parent();

 if (row.prev().prev().get(0)) row.prev().prev().before(row)

})

我把这段代码:$(document).on(“单击”,“tr>td div.up”,function(){var row=$(this.parent().parent();if(row.prev().prev().get(0))row.prev().prev().before(row)})。。。但是行没有移动?@Kelish您的div嵌套在另一行中!您需要再添加一个父项,它正在工作:@Kelish fiddle不见了,很抱歉,无论如何,您必须添加一个父项()才能在行中获得tr,这就是itThanks mikakun,现在很有意义!
$("table").on("click","tr > td > span.moveup", function() {
  var row = $(this).parent().parent();

 if (row.prev().prev().get(0)) row.prev().prev().before(row)

})