【问题标题】:how to get sortable id for non sortable class in jquery ui sortable如何在jquery ui sortable中获取不可排序类的可排序ID
【发布时间】:2016-04-15 07:15:50
【问题描述】:

我在 li 元素中有 5 个项目和 id。我想对除第三个之外的所有 li 元素进行排序。但在提交时,我希望所有li 元素ids 以​​任何顺序排列,不包括第三个,它将保持在相同的位置。

HTML:

<ul class="sortable">
    <li id="1">Item 1</li>
    <li id="2">Item 2</li>
    <li id="3" class="unsortable">Item 3</li>
    <li id="4">Item 4</li>
    <li id="5">Item 5</li>
</ul>

jQuery:

$(".sortable").sortable({
  items: "li:not(.unsortable)",
  stop: function(ev, ui) {
    order = $('.ui-sortable').sortable('toArray').toString();
    console.log(order)
  }
});
$(".sortable").disableSelection();

在控制台中,所有的值都出现了,除了不可排序的类。

1,2,4,5

我希望结果包含“3”,例如:1,2,3,4,5。我怎样才能做到这一点?

感谢您的帮助。

【问题讨论】:

    标签: jquery-ui-draggable jquery-ui-sortable


    【解决方案1】:

    您可以使用refreshPositions 方法确保所有项目都包含在您打印到控制台的结果中。

    refreshPositions 的调用返回父ul,您可以从那里查询children() 以确定顺序。子元素将包含所有 li 元素,无论它们的“可排序性”如何。

    $(".sortable").sortable({
      items: "li:not(.unsortable)",
      stop: function(ev, ui) {
        //Use map to obtain the ids
        var order = $.map($('.sortable').sortable('refreshPositions').children(), function(item) {
          return item.id;
        }).toString();
    
        console.log(order)
      }
    });
    $(".sortable").disableSelection();
    

    点击下面的快速演示:

    Fiddle Demo


    refreshPositionsinfo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多