【问题标题】:Get order of JQuery sortable divs with ID's获取带有 ID 的 JQuery 可排序 div 的顺序
【发布时间】:2017-09-14 06:27:15
【问题描述】:

我目前有一组div如下:

  <ol id ="listOfApplied">
    <div id ="modalBody">
        <li id ="1"><div class='myDiv' id ="id1"><h4>Item 1</h4>
        </div>
        </li>
        <li id ="2"><div class='myDiv' id ="id2"><h4>Item 2</h4>
        </div>
        </li>
        <li id ="3"><div class='myDiv' id ="id3"><h4>Item 3</h4>
        </div>
        </li>

    </div>
  </ol>

目前这显示在模式窗口中,当我单击保存按钮时,我想获取列表的顺序,但我需要的是 li id(为了知道它的位置)和 div id知道 li 指的是什么。我现在拥有的是:

$("#listModalBody").on("click","#saveOrder", function(){


            $("#listOfApplied").sortable({
          });
          var listElements =  $("#listOfApplied").sortable("toArray") ;
           console.log(listElements);


    });

但这只会返回一个包含许多字段的庞大复杂数组。有没有办法获得我需要的信息?提前致谢!

更新-我的保存功能:

  $(function() {
  $("#listModalBody").on("click","#saveOrder", function(){


      var ordered_divs= [];
      $("#listOfApplied li").sort(function (a, b) {
          return parseInt(a.id) > parseInt(b.id);
      }).each(function () {
          console.log($(this).text());
          ordered_divs.push({li_id: $(this).prop('id'), div_id: $(this).find('div').prop('id')});
      });
      console.log(ordered_divs);

    });
  });

【问题讨论】:

    标签: jquery list jquery-ui-sortable


    【解决方案1】:

    var ordered_divs= [];
     var positions;
    
      $( "#listOfApplied").sortable({
           update: function(event, ui) {
                  $('#listOfApplied li').each( function(e) {
                      console.log({li_id: $(this).prop('id'), div_id: $(this).find('div').prop('id')});
                      ordered_divs.push({li_id: $(this).prop('id'), div_id: $(this).find('div').prop('id')});
                   });
                  positions = ordered_divs.join(';')
                 }
      });
    
    $('#GetOrder').on('click',function(){
      console.dir(positions);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
    <ul id ="listOfApplied">
            <li id ="1"><div class='myDiv' id ="id1"><h4>Item 1</h4>
            </div>
            </li>
            <li id ="2"><div class='myDiv' id ="id2"><h4>Item 2</h4>
            </div>
            </li>
            <li id ="3"><div class='myDiv' id ="id3"><h4>Item 3</h4>
            </div>
            </li>
      </ul>
      <button id="GetOrder">Get Order</button>

    【讨论】:

    • 我不确定你是否误解了这个问题,我正在寻找一个返回 div 顺序的数组。在数组中,我理想地需要类似数据 ['li_id':1,'div id':2],['li_id':2,'div id':3] ['li_id':3,'div id': 1] .. 如果第 2 项在列表中排在第一位,第 3 项排在第二位,第 1 项排在第 3 位。不过,我感谢您的帮助! :)
    • 修改示例以创建您的数组。
    • 这正是我想要的回报!只有一件事,当我点击保存按钮时,返回给我的对象仍然显示原始顺序,即使我移动了 div,我做错了什么吗?我更新了我的问题。您上面的代码正是我希望返回的那种数据!谢谢
    • 您在移动 div 时是否更新了 ID?仔细检查 ID 是否以您需要的方式更新。通过拖放元素不会自行完成。
    • 从我得到的沉默中:) 我已经修改了示例以满足您对 sortable 的需求,现在怎么样?
    猜你喜欢
    • 2019-10-11
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多