这是我的html代码,我放入一个数组进行排序。我试图让数字从最低到最高(在ids中)排序。但我的所有代码似乎都是在保持当前顺序的同时从上到下。环顾四周并尝试了一些不同的方法,我还没有找到解决方案。有什么建议?
<a href="#" class="link-sort-list asc">A-Z</a> <a href="#" class="link-sort-list desc">Z-A</a>
<ul id="sortable">
<li id="220" class="p_box"></li>
<li id="221" class="p_box"></li>
<li id="217" class="p_box"></li>
<li id="215" class="p_box"></li>
<li id="219" class="p_box"></li>
<li id="216" class="p_box"></li>
<li id="218" class="p_box"></li>
<li id="214" class="p_box"></li>
<li id="208" class="p_box"></li>
<li id="206" class="p_box"></li>
</ul>
这是我的javascript排序功能。问题可能在这里,但我不确定。
var $list = $('#sortable');
var $myId = [];
var $myId = $(".p_box");
//Sort Click Buttons
$('.link-sort-list').click(function(e) {
if ($(this).hasClass('asc')){
$list.empty().append($myId.sort(function(a,b){return a < b}));
} else {
$list.empty().append($myId.sort());
}
e.preventDefault();
});
答案 0 :(得分:1)
您必须按ID排序,并按其他方式排序,反转条件
var $list = $('#sortable');
$('.link-sort-list').click(function(e) {
e.preventDefault();
if ($(this).hasClass('asc')) {
$list.find('li').sort(function(a, b) {
return a.id - b.id;
}).appendTo($list);
} else {
$list.find('li').sort(function(a, b) {
return b.id - a.id;
}).appendTo($list);
}
});
答案 1 :(得分:1)
我会做this之类的事情:
$("#clickme").click(function(){
var holder = [];
$("#sortable").find("li").each(function(){
holder.push($(this).attr("id"));
});
holder.sort();
var length = holder.length, i = 0, k = 0;
for (; i < length; i++){
holder[i] = $("#" + holder[i]);
}
$("#sortable").children().remove();
for (var k = length - 1; k > -1; k--){
holder[k].insertAfter($("#sortable"));
}
})
答案 2 :(得分:0)
我没有看到$list
和$myId
来自哪里,但排序中的函数应该是:
return a - b;