我暂时搁置了这个问题。我有一个嵌套列表,其结构看起来像
Volume1
Chapter4
Chapter3
Section3-6
Section3-1
Volume2...
...
我想要的是创建一个排序函数来对音量,章节和节进行排序。
所以,结果可能就像
Volume1
Chapter1
Section1-1
....
所以我得到了一个复杂的html,这里是whole html。
我不确定如何交换此复杂div
我试图获取元素并将它们放入数组中。
var toSort = document.getElementById('volume5015').children;
toSort = Array.prototype.slice.call(toSort, 0);
答案 0 :(得分:0)
我为你做了一个小提琴。
在我的代码中,我正在修剪文本的空白,所以不要进行比较,但如果你不想要,你实际上并不需要。
var $items = $("#to-sort").children();
var $resultList = $("#list2");
sortMarkup($items, $resultList);
function sortMarkup($elements, $output) {
$elements.sort(function(a, b) {
var contentA = getPureText(a).trim();
var contentB = getPureText(b).trim();
var okay = contentA.toUpperCase().localeCompare(contentB.toUpperCase());
if( $(a).children().length > 0 )
sortMarkup( $(a).children(), $(a) );
if( $(b).children().length > 0 )
sortMarkup( $(b).children(), $(b) );
console.log("sorting ["+contentA+"] and ["+contentB+"] returned "+okay);
return okay;
});
$output.append($elements);
}
function getPureText(elem) {
return $(elem).contents().filter(function() {
return this.nodeType == 3;
})[0].nodeValue;
}
另外,我正在使用输出列表,另一件不需要的东西。随意修改您的需求!