2016-04-15 27 views
0

我有li元素中的5個項目與id。我想排除除第3個以外的所有li元素。但在提交時,我希望以任何順序排列所有li元素,不包括第三個元素,它們將保持相同的位置。如何獲得可排序的id在jquery ui排序中的不可排序類

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。我怎樣才能做到這一點?

感謝您的幫助。

回答

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


refreshPositionsinfo