【问题标题】:JQUERY UI Sorting the rows except the first cellJQUERY UI对除第一个单元格以外的行进行排序
【发布时间】:2014-12-09 17:59:20
【问题描述】:

我正在使用 JQuery UI Sortable() 库,并且我正在尝试对除每行的第一个单元格之外的表行进行排序。 这可能吗?

我正在使用下面的代码完美地拖动行:

  var fixHelperModified = function(e, tr) {
      var $originals = tr.children();
      var $helper = tr.clone();
      $helper.children().each(function(index) {
          $(this).width($originals.eq(index).width())
      });
      return $helper;
  };

  $("tbody").sortable({
      helper: fixHelperModified,
  }).disableSelection();

如果有意义的话,是否可以只移动除第一个单元格(或列)之外的行?

原因是我有一个带有 ID 值的输入字段,但是我不希望它与行的其余部分一起移动或更改,我需要它保持正确的顺序。

需求图:

非常感谢您的帮助!

再次感谢,

【问题讨论】:

    标签: html jquery-ui row jquery-ui-sortable


    【解决方案1】:

    我用你的 code-sn-p 给你做了一点JSFiddle,应该可以解决你的问题。 也有offical example

    HTML(示例表) 注意第一个 TD 上的“固定”类:

    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
    <TABLE id="sortable">
        <thead></thead>
        <tbody>
            <TR id="row1">
                <TD class="fixed">Data 1</TD>
                <TD>Data 2</TD>
                <TD>Data 3</TD>
                <TD>Data 4</TD>
            </TR>
            <TR id="row2">
                <TD class="fixed">Data 1</TD>
                <TD>Data 2</TD>
                <TD>Data 3</TD>
                <TD>Data 4</TD>
            </TR>
            <TR id="row3">
                <TD class="fixed">Data 1</TD>
                <TD>Data 2</TD>
                <TD>Data 3</TD>
                <TD>Data 4</TD>
            </TR>
        </tbody>
    </TABLE>
    

    添加了cancel: ".ui-state-disabled"items: "td:not(.ui-state-disabled)"。 之后,您只需将类 "ui-state-disabled" 添加到您不想排序的任何对象中。 jQuery-UI-部分:

      var fixHelperModified = function (e, tr) {
          var $originals = tr.children();
          var $helper = tr.clone();
          $helper.children().each(function (index) {
              $(this).width($originals.eq(index).width())
          });
          return $helper;
      };
    
      $("table tr").sortable({
          helper: fixHelperModified,
          cancel: ".ui-state-disabled",
          items: "td:not(.ui-state-disabled)"
      }).disableSelection();
    
      $(".fixed").addClass("ui-state-disabled");
    

    【讨论】:

    • 嗨,哇,非常感谢您的示例和支持!这几乎是我要寻找的,但是除了第一个移动之外,我需要除第一个移动之外的每个 单元格,我需要该行中的所有单元格一起移动。我认为这只需要调整项目或班级?
    • @AlpaxJ1 JQuery-UI.Sortable 对表有一些问题,所以你会遇到问题。如果可以,请尝试制作一个列表,或者如果您想保留表格,请尝试从表格中排除您的第一行。
    • 嗨@AlpaxJ1,如果这个或任何答案已经解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    • 从您的 JFiddle 中,我将如何仅将一组中的 DATA 2 个单元格排序在一起(如一行)?这可能吗?
    • 更新了我的第一次尝试。我不喜欢一张桌子里面有两张桌子,但这似乎是解决您的问题的最简单方法!检查一下,告诉我这是否更好!
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签