Я пытаюсь отсортировать вложенные списки.Я наткнулся на эту ссылку: Сортировка элементов
Однако, это дает мне большую часть пути,Предполагается, что у вас нет списков, подобных
<ul>
<li><span>sortable text a</span>
<ul>
<li><span>sortable subtext</span></li>
</ul>
</li>
<ul>
Всякий раз, когда я использую код, предложенный выше, любой вложенный список добавляется к первому <li>
во вложенном списке.Мне нужно, чтобы перейти к исходному элементу списка.
Мой код:
$(document).ready(function() {
// for each ul separately
$('#rootUl ul, ul').each(function(_, ul) {
// get all the nodes to be sorted
var $toSort = $(ul).children('li').children('span');
// extract the text
var values = $toSort.get().map(function(span) {
return span.textContent;
});
// sort the text
values.sort();
// shove reordered texts back into the original elements
values.forEach(function(value, index) {
$toSort[index].textContent = value;
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="rootUl">
<li><span>zzz</span>
<ul>
<li><span>dd zzz</span></li>
<li><span>aa zzz</span></li>
<li><span>bb zzz</span></li>
</ul>
</li>
<li><span>ccc</span>
<ul>
<li><span>ll ccc</span></li>
<li><span>nn ccc</span></li>
<li><span>mm ccc</span></li>
</ul>
</li>
<li><span>rrr</span>
<ul>
<li><span>ss rrr</span>
<ul>
<li><span>dd ss rrr</span></li>
<li><span>ff ss rrr</span></li>
<li><span>ee ss rrr</span></li>
</ul>
</li>
<li><span>rr rrr</span></li>
<li><span>qq rrr</span></li>
</ul>
</li>
</ul>
Я ожидал бы следующее:
<ul id="rootUl">
<li>
<span>ccc</span>
<ul>
<li><span>ll ccc</span></li>
<li><span>mm ccc</span></li>
<li><span>nn ccc</span></li>
</ul>
</li>
<li>
<span>rrr</span>
<ul>
<li><span>qq rrr</span></li>
<li><span>rr rrr</span></li>
<li><span>ss rrr</span>
<ul>
<li><span>dd ss rrr</span></li>
<li><span>ee ss rrr</span></li>
<li><span>ff ss rrr</span></li>
</ul>
</li>
</ul>
</li>
<li>
<span>zzz</span>
<ul>
<li><span>aa zzz</span></li>
<li><span>bb zzz</span></li>
<li><span>dd zzz</span></li>
</ul>
</li>
</ul>
Но вместо этого я получаю это:
<ul id="rootUl">
<li>
<span>ccc</span>
<ul>
<li><span>aa zzz</span></li>
<li><span>bb zzz</span></li>
<li><span>dd zzz</span></li>
</ul>
</li>
<li>
<span>rrr</span>
<ul>
<li><span>ll ccc</span></li>
<li><span>mm ccc</span></li>
<li><span>nn ccc</span></li>
</ul>
</li>
<li><span>zzz</span>
<ul>
<li>
<span>qq rrr</span>
<ul>
<li><span>dd ss rrr</span></li>
<li><span>ee ss rrr</span></li>
<li><span>ff ss rrr</span></li>
</ul>
</li>
<li><span>rr rrr</span></li>
<li><span>ss rrr</span></li>
</ul>
</li>
</ul>