简体   繁体   English

使用 jquery UI sortable 对多个 UL 和 LI 元素进行排序

[英]Sort Multiple UL and LI elements using jquery UI sortable

i am working on sorting multiple ul and li elements using jquery UI sortable and the html code is like below,我正在使用 jquery UI sortable 对多个 ul 和 li 元素进行排序,html 代码如下所示,

<ul class="nav navbar-nav groupsList ui-sortable" id="groupsList">

  <li class="dropdown group ui-sortable-handle" id="group1">
    <a href="#" class="dropdown-toggle mdl_active" data-toggle="dropdown" role="button" aria-expanded="false">Introduction <span class="caret"></span></a>
    <ul id="groupItems1" class="dropdown-menu itemsList ui-sortable" role="menu">
       <li class="handle ui-sortable-handle" data-id="6"><a href="#">Module 1 topic1</a></li>
       <li class="handle ui-sortable-handle" data-id="7"><a href="#">Module 1 topic 2</a></li>
       <li class="handle ui-sortable-handle" data-id="14" style=""><a href="#">module 2 MCQ challenge</a></li><li class="handle ui-sortable-handle" data-id="10"><a href="#">INterview with Boman irani</a></li>
       <li class="handle ui-sortable-handle" data-id="11"><a href="#">New topic newly added</a></li>
       <li class="handle ui-sortable-handle" data-id="17"><a href="#">Game 2</a></li>
     </ul>
   <div class="clearfix"></div>
   </li>

   <li class="dropdown group ui-sortable-handle" id="group2">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Discover <span class="caret"></span></a>
    <ul id="groupItems2" class="dropdown-menu itemsList ui-sortable" role="menu">                                                          
     <li class="handle ui-sortable-handle" data-id="15"><a href="#">MCQ Challenge 55</a></li>
     <li class="handle ui-sortable-handle" data-id="4" style=""><a href="#">Module 2 Topic</a></li>
     <li class="handle ui-sortable-handle" data-id="5"><a href="#">Module 2 Topic 2</a></li>
     <li class="handle ui-sortable-handle" data-id="13"><a href="#">MCQ Challenge</a></li>
     <li class="handle ui-sortable-handle" data-id="16"><a href="#">Game1</a></li>
   </ul>
   <div class="clearfix"></div>
  </li>

  <li class="dropdown group ui-sortable-handle" id="group3">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Define <span class="caret"></span></a>
    <ul id="groupItems3" class="dropdown-menu itemsList ui-sortable" role="menu">
     <li class="handle ui-sortable-handle" data-id="1"><a href="#">Topicc 1</a></li>
     <li class="handle ui-sortable-handle" data-id="2"><a href="#">Topic 2</a></li>
     <li class="handle ui-sortable-handle" data-id="3"><a href="#">Test</a></li>
   </ul>
   <div class="clearfix"></div>
  </li>

</ul>

Jquery code is, Jquery 代码是,

$('#groupsList').sortable();
$('.itemsList').sortable({
    connectWith: $('.itemsList'),
    update: function( event, ui ) {

    var sortData = $( ".itemsList" ).sortable('toArray',{ attribute: 'data-id'});
    console.log(sortData);
    }
});

Now i want to get array of id's in one array or module wise.现在我想在一个数组或模块中获取 id 数组。 but above code displays only first ul array data like below,但上面的代码只显示第一个 ul 数组数据,如下所示,

["6", "10", "7", "11", "14", "17"] [“6”、“10”、“7”、“11”、“14”、“17”]

i want all three module data id in this array.我想要这个数组中的所有三个模块数据 ID。 Note: above ul is dynamic and i have written this using laravel/php for loop注意:上面的 ul 是动态的,我用 laravel/php for loop 写了这个

This can be done easily enough with vanilla JavaScript and DOM API. See the comments in the code for step by step explaination:这可以使用 vanilla JavaScript 和 DOM API 轻松完成。请参阅代码中的注释以获取逐步说明:

 // Use querySelectorAll to get all matching elements based on the class name // Note the spread syntax used to spread the querySelectorAll result into an Array const sortedIds = [...document.querySelectorAll('.ui-sortable-handle')] // Filter out any matches that dont have a data-id attribute.filter(el =>..el.dataset.id) // Extract only the dataset.id of each element to a new array.map(el => el.dataset.id) // Sort the array of dataset,id elements in ASC order;sort((a. b) => a - b); console.log(sortedIds)
 <ul class="nav navbar-nav groupsList ui-sortable" id="groupsList"> <li class="dropdown group ui-sortable-handle" id="group1"> <a href="#" class="dropdown-toggle mdl_active" data-toggle="dropdown" role="button" aria-expanded="false">Introduction <span class="caret"></span></a> <ul id="groupItems1" class="dropdown-menu itemsList ui-sortable" role="menu"> <li class="handle ui-sortable-handle" data-id="6"><a href="#">Module 1 topic1</a></li> <li class="handle ui-sortable-handle" data-id="7"><a href="#">Module 1 topic 2</a></li> <li class="handle ui-sortable-handle" data-id="14" style=""><a href="#">module 2 MCQ challenge</a></li> <li class="handle ui-sortable-handle" data-id="10"><a href="#">INterview with Boman irani</a></li> <li class="handle ui-sortable-handle" data-id="11"><a href="#">New topic newly added</a></li> <li class="handle ui-sortable-handle" data-id="17"><a href="#">Game 2</a></li> </ul> <div class="clearfix"></div> </li> <li class="dropdown group ui-sortable-handle" id="group2"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Discover <span class="caret"></span></a> <ul id="groupItems2" class="dropdown-menu itemsList ui-sortable" role="menu"> <li class="handle ui-sortable-handle" data-id="15"><a href="#">MCQ Challenge 55</a></li> <li class="handle ui-sortable-handle" data-id="4" style=""><a href="#">Module 2 Topic</a></li> <li class="handle ui-sortable-handle" data-id="5"><a href="#">Module 2 Topic 2</a></li> <li class="handle ui-sortable-handle" data-id="13"><a href="#">MCQ Challenge</a></li> <li class="handle ui-sortable-handle" data-id="16"><a href="#">Game1</a></li> </ul> <div class="clearfix"></div> </li> <li class="dropdown group ui-sortable-handle" id="group3"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Define <span class="caret"></span></a> <ul id="groupItems3" class="dropdown-menu itemsList ui-sortable" role="menu"> <li class="handle ui-sortable-handle" data-id="1"><a href="#">Topicc 1</a></li> <li class="handle ui-sortable-handle" data-id="2"><a href="#">Topic 2</a></li> <li class="handle ui-sortable-handle" data-id="3"><a href="#">Test</a></li> </ul> <div class="clearfix"></div> </li> </ul>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM