jQuery ui sortable toArray跳过1项

时间:2011-07-03 17:16:31

标签: javascript jquery jquery-ui

我试图在订单更改后将itemWrapper中的所有li id放在一个数组中。

它确实如此,但它总是丢失一个项目。李有多少并不重要。每次它都缺少一个li id。

我做错了什么?

var result = "";
$("#itemWrapper").sortable({change: function(event, ui) {
    result = $("#itemWrapper").sortable("toArray");
}});
$(".colItem").disableSelection();

<ul id="itemWrapper" style="list-style-type:none;">
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_48_0_1"><img src="../images/items/1309680939.jpg" width="190" height="130" alt="3768" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_50_0_1"><img src="../images/items/1309681037.jpg" width="190" height="130" alt="3765" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_58_0_1"><img src="../images/items/1309681326.jpg" width="190" height="130" alt="3768" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_51_0_1"><img src="../images/items/1309681056.jpg" width="190" height="130" alt="11090" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_52_0_1"><img src="../images/items/1309681077.jpg" width="190" height="130" alt="3766" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_53_0_1"><img src="../images/items/1309681100.jpg" width="190" height="130" alt="3769" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_54_0_1"><img src="../images/items/1309681118.jpg" width="190" height="130" alt="11092" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_55_0_1"><img src="../images/items/1309681135.jpg" width="190" height="130" alt="11077" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_56_0_1"><img src="../images/items/1309681155.jpg" width="190" height="130" alt="3762" /></li> 
<li class="colItem ui-state-default" style="margin-right:-5px;" id="item_57_0_1"><img src="../images/items/1309681177.jpg" width="190" height="130" alt="3761" /></li> 
</ul>

1 个答案:

答案 0 :(得分:7)

我认为问题在于您使用的是错误的事件。如果你使用“停止”它是有效的。在这里摆弄:http://jsfiddle.net/jeYPJ/

$("#itemWrapper").sortable({stop: function(event, ui) {
    result = $("#itemWrapper").sortable("toArray");
     console.log(result.length);

}});

我认为,与排序时触发更改事件的事实有关:在这种情况下,它不会计算您正在排序的项目。