jquery可排序小部件inArray循环

时间:2014-06-17 11:29:43

标签: jquery jquery-ui for-loop jquery-ui-sortable

任何人都可以帮助我jQuery sortable. 下面的代码创建数组:

 order = ["Layer1", "Layer2", "Layer0"]. 

这是正确的顺序,但for循环给出

 result: Layer0, Layer1, Layer2.

当我拖动最后创建的列表项时,会发生这种情况,为什么Layer2Layer1之间没有Layer0? 为什么循环不在Layer1Layer2Layer0的顺序?

window.onload = function(){
$(function() {
var idsInOrder=$("#myLayers").sortable({
  update: function(event, ui) {
         var changedList = this.id;
         var order = $("#myLayers").sortable('toArray');
        for(var a=0; a<=n; a++){
           k=a.toString();    
           var u=jQuery.inArray( "Layer"+k, order );
           console.log("Layer"+k );
  }
},

});
 $("#myLayers").disableSelection();
});
};

1 个答案:

答案 0 :(得分:0)

<强> Demo

因为,您正在使用第一个初始化的可排序对象。您可以使用以下实现;

<强> HTML:

    <ul id="myLayers">
        <li class="ui-state-default" id="1"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 1</li>
        <li class="ui-state-default" id="2"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 2</li>
        <li class="ui-state-default" id="3"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 3</li>
        <li class="ui-state-default" id="4"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 4</li>
        <li class="ui-state-default" id="5"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 5</li>
        <li class="ui-state-default" id="6"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 6</li>
        <li class="ui-state-default" id="7"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Layer 7</li>
    </ul>
<b>Status:</b>
<div id="status"></div>

<强> jQuery的:

$(function() {
  var idsInOrder=$("#myLayers").sortable({
    update: function(event, ui) {
        var layers = [];
        $('#myLayers li').each( function(e) {
            layers.push( ( $(this).index() + 1 )  + '= Layer ' +  $(this).attr('id'));
        });
        var positions = layers.join("<br/>")
        $("#status").html(positions);
      }

  });
  $("#myLayers").disableSelection();
});