为什么我不能在jquery api $ .makeArray()创建的Array对象上使用java脚本方法Sort() 对于Eg: 我的DOM有这些元素
<ul id="languages">
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
</ul>
我试图对它们进行排序和追加。
var elems = document.getElementsByTagName( "li" );
var arr = $.makeArray( elems );
arr.sort();
$( arr ).appendTo( "#languages" );
答案 0 :(得分:0)
您需要使用自定义排序方法根据内容对元素进行排序
//You can use .get() to get an array of elements from a jQuery object
var arr = $("li").get();
arr.sort(function(o1, o2) {
return $(o1).text().localeCompare($(o2).text())
});
$(arr).appendTo("#languages");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="languages">
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
</ul>
答案 1 :(得分:0)
您必须使用toArray()
转换包裹在dom对象周围的jquery对象。
var elems = document.getElementsByTagName( "li" );
var sorted = $(elems).toArray().sort();
答案 2 :(得分:0)
这应该是你问题的解决方案 - 希望这会有所帮助
var elems = document.getElementsByTagName( "li" );
var arr = $.makeArray( elems );
arr.sort(function(a, b){
return a.innerHTML > b.innerHTML;
});
$( arr ).appendTo( "#languages" )