Điều này có lẽ sẽ là cách nhanh nhất để làm điều đó, vì nó không sử dụng jQuery:
function sortList(ul){
var new_ul = ul.cloneNode(false);
// Add all lis to an array
var lis = [];
for(var i = ul.childNodes.length; i--;){
if(ul.childNodes[i].nodeName === 'LI')
lis.push(ul.childNodes[i]);
}
// Sort the lis in descending order
lis.sort(function(a, b){
return parseInt(b.childNodes[0].data , 10) -
parseInt(a.childNodes[0].data , 10);
});
// Add them into the ul in order
for(var i = 0; i < lis.length; i++)
new_ul.appendChild(lis[i]);
ul.parentNode.replaceChild(new_ul, ul);
}
Gọi chức năng như:
sortList(document.getElementsByClassName('list')[0]);
Bạn có thể sắp xếp danh sách khác theo cùng một cách và nếu bạn có các yếu tố khác trên cùng một trang với lớp danh sách, bạn nên cung cấp cho một id của bạn và chuyển nó vào bằng cách sử dụng thay vào đó.
Example JSFiddle
Sửa
Vì bạn nói rằng bạn muốn nó xảy ra trên PageLoad, tôi giả sử bạn muốn nó xảy ra càng sớm càng tốt sau khi ul là trong DOM có nghĩa là bạn nên thêm chức năng sortList
đến đầu trang của bạn và sử dụng nó ngay lập tức sau khi danh sách của bạn như thế này:
<head>
...
<script type="text/javascript">
function sortList(ul){
var new_ul = ul.cloneNode(false);
var lis = [];
for(var i = ul.childNodes.length; i--;){
if(ul.childNodes[i].nodeName === 'LI')
lis.push(ul.childNodes[i]);
}
lis.sort(function(a, b){
return parseInt(b.childNodes[0].data , 10) - parseInt(a.childNodes[0].data , 10);
});
for(var i = 0; i < lis.length; i++)
new_ul.appendChild(lis[i]);
ul.parentNode.replaceChild(new_ul, ul);
}
</script>
</head>
<body>
...
<ul class="list">
<li id="alpha">32</li>
<li id="beta">170</li>
<li id="delta">28</li>
</ul>
<script type="text/javascript">
!function(){
var uls = document.getElementsByTagName('ul');
sortList(uls[uls.length - 1]);
}();
</script>
...
</body>
thấy ở đây http://stackoverflow.com/q/1134976/771300 –
@maerics Tôi đã thử bản gốc để xây dựng nó từ đầu với một mảng 'hàm listSort (a, B) { trả về a - b; } var n = ["10", "775", "40", "1125", "1", "8"]; document.write (n.sort (listSort)); ' Tôi đã sắp xếp lại danh sách theo thứ tự nhưng không thể tìm ra nó để làm việc với các ID danh sách khác nhau. – danssker