排序<李><Ul>根据<span>内部<李>
Sorting <li> elements of a <Ul> according to text in <span> inside <li>
我在<ul>
中有一个类似于<ul>
的嵌套<ul>
,并且<ul>
下的所有<li>
都有<span>
。我想根据<span>
中的文本,按字母顺序对所有<li>
项目进行排序
这是的样品
<ul id="rootUl">
<li>
<span>zz</span>
</li>
<li>
<ul>
<li><span>rr</span></li>
<li><span>bb</span></li>
<li><span>hh</span></li>
</ul>
<li>
<span>kk</span>
</li>
<li>
<span>mm</span>
</li>
</ul>
根CCD_ 9将始终存在,但是该CCD_。
目前我正在尝试获取数组中<ul id="rootUl">
下的所有<ul>
,并将它们逐一传递给排序函数。
这是小提琴http://jsfiddle.net/6tvzhkvk/2/
给定样本的预期结果将类似
<ul id="rootUl">
<li>
<span>kk</span>
</li>
<li>
<ul>
<li><span>bb</span></li>
<li><span>hh</span></li>
<li><span>rr</span></li>
</ul>
<li>
<span>mm</span>
</li>
<li>
<span>zz</span>
</li>
</ul>
// for each <ul> separately
$('#rootUl ul, #rootUl').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://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="rootUl">
<li>
<span>zz</span>
</li>
<li>
<ul>
<li><span>rr</span></li>
<li><span>bb</span></li>
<li><span>hh</span></li>
</ul>
<li>
<span>kk</span>
</li>
<li>
<span>mm</span>
</li>
</ul>
试试这个Fiddle
JS代码:
$('#sortTree').click(function () {
var items = $('#rootul > li').get();
var nestedItems = $('#rootul > li > ul > li').get();
items = sort(items);
adjustItems('#rootul', items);
nestedItems = sort(nestedItems);
adjustItems('#rootul > li > ul', nestedItems);
});
function sort(items) {
items.sort(function(a,b){
var keyA = $(a).text();
var keyB = $(b).text();
if (keyA < keyB) return -1;
if (keyA > keyB) return 1;
return 0;
});
return items;
}
function adjustItems(sel, items) {
var ul = $(sel);
$.each(items, function(i, li){
ul.append(li);
});
}
相关文章:
- 正在检测导航到<a name=“;最新主题”></a>
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在<script src=“"></脚本>标签
- 等效于<script src=“;something1.json”></脚本>
- CSS/.JS问题,<ul><李>在Megamenu中
- 如何在<td></td>在Procractor中
- 显示“<script src='some.js'></脚本>"在Html文档中
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- <script src=“//代码.jquery.com/jquery-1.11.1.min.js”></
- 选择<脚本></脚本>作为html正文中的纯文本
- 可折叠<UL><李>不起作用
- $.mobile.loadPage()和$(“linkBtn”).click();t负载<头部></头部&
- <脚本/>vs<脚本></脚本>webpack和angular
- Javascript/RRails-如何包装link_to而不是<a></a>在javascript
- jQuery在处理<选择><选项>
- 布局lt md已被弃用.请使用`layout gt-<xxx>`变种
- 在<%%中定义的访问变量>从<脚本></脚本>
- 页面设计<a href><按钮><输入>在JSP中
- 注入html标记<ul></ul>在我的<李></李>元素
- jQuery选择器<按钮></按钮>