如何在jquery ui sortable中获取非可排序类的可排序ID

时间:2016-04-15 07:15:50

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

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

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。我怎样才能做到这一点?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用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

refreshPositions info