如何在jQuery中移动表格行?

Posted

技术标签:

【中文标题】如何在jQuery中移动表格行?【英文标题】:How to move table row in jQuery? 【发布时间】:2010-12-06 21:27:22 【问题描述】:

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

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

【问题讨论】:

您可以选择在您的平台上使用网格控件吗? 【参考方案1】:

你也可以用可调节的上/下做一些非常简单的事情..

假设您的链接有一个updown 类,您可以在链接的点击处理程序中将其连接起来。这也是假设链接位于网格的每一行内。

$(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());
        
    );
);

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>

Demo - JsFiddle

【讨论】:

@Quintin:谢谢。如果 tr 行样式不显示,那么如何将行移动到显示块的上一行?如果任何一种行样式都没有显示,那么我需要多次单击以向上或向下移动。有什么建议吗? 关于如何隐藏第一行的“向上”链接和最后一行的“向下”链接有什么建议吗? @rboarman 类似于$(".up,.down").show(); 然后$("tr:first .up,tr:last .down").hide();,但您可能需要根据您的确切需求调整选择器。 @paulrajj 您可以使用prevAllnextAll 代替prevnext 并传递:visible:first 作为选择器来完成此操作。 我已经想通了,分享如下: if ($(this).is(".up")) row.insertBefore(row.prev("tr:has(td)" )); 其他 row.insertAfter(row.next()); 【参考方案2】:
$(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());
      

  );

);

尝试使用 JSFiddle

【讨论】:

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

以上是关于如何在jQuery中移动表格行?的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的表格在移动视图中按行折叠

当您的数据源是 Results 对象时,如何在表格视图中移动行?

请教jquery 对表格的行操作的。对页面表格进行上下移动位置,删除记录的操作。 谢谢。如下补充

如何在表格中上下移动行并使用javascript在新div中显示行内容

iOS:文本字段委托,如何在处理表格视图中的行移动之前自动结束编辑?

如何使用textview移动到表格视图中的下一个单元格/行