如何在jQuery中移动表行?

Wil*_*lco 66 html javascript jquery dom

假设我有上/下箭头的链接,用于按顺序向上或向下移动表格行.将该行向上或向下移动一个位置(使用jQuery)最简单的方法是什么?

似乎没有任何直接的方法来使用jQuery的内置方法来做到这一点,并且在用jQuery选择行之后,我还没有找到一种方法来移动它.另外,在我的情况下,使行可拖动(我之前使用插件完成)不是一个选项.

Qui*_*son 167

你可以通过可调节的上/下来做一些非常简单的事情.

鉴于你的链接有一个类,up或者down你可以在链接的点击处理程序中连接它.这也是假设链接在网格的每一行内.

$(document).ready(function(){
    $(".up,.down").click(function(){
        var row = $(this).parents("tr:first");
        if ($(this).is(".up")) {
            row.insertBefore(row.prev());
        } else {
            row.insertAfter(row.next());
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<table>
    <tr>
        <td>One</td>
        <td>
            <a href="#" class="up">Up</a>
            <a href="#" class="down">Down</a>
        </td>
    </tr>
    <tr>
        <td>Two</td>
        <td>
            <a href="#" class="up">Up</a>
            <a href="#" class="down">Down</a>
        </td>
    </tr>
    <tr>
        <td>Three</td>
        <td>
            <a href="#" class="up">Up</a>
            <a href="#" class="down">Down</a>
        </td>
    </tr>
    <tr>
        <td>Four</td>
        <td>
            <a href="#" class="up">Up</a>
            <a href="#" class="down">Down</a>
        </td>
    </tr>
    <tr>
        <td>Five</td>
        <td>
            <a href="#" class="up">Up</a>
            <a href="#" class="down">Down</a>
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

演示 - JsFiddle

  • 关于如何隐藏第一行的“向上”链接和最后一行的“向下”链接的任何建议? (2认同)
  • 我已经知道了,分享如下:if($(this).is(".up")){row.insertBefore(row.prev("tr:has(td)")); } else {row.insertAfter(row.next()); } (2认同)

She*_*R A 11

$(document).ready(function () {
   $(".up,.down").click(function () {
      var $element = this;
      var row = $($element).parents("tr:first");

      if($(this).is('.up')){
         row.insertBefore(row.prev());
      } 
      else{
         row.insertAfter(row.next());
      }

  });
Run Code Online (Sandbox Code Playgroud)

});

尝试使用 JSFiddle

  • 可以缩短它:var row = $(this).closest('tr'); (3认同)