[英]Using jQuery to sort li
我有一个用于对li
的列表进行排序的脚本,但是当有多个数字时,它不起作用,它优先选择第一个数字,因此10在2之前。有没有办法修改它,以便根据数值对它进行排序?
jQuery.fn.sortDomElements = (function() {
return function(comparator) {
return Array.prototype.sort.call(this, comparator).each(function(i) {
this.parentNode.appendChild(this);
});
};
})();
$("#sortable3, #sortable4").children().sortDomElements(function(a,b){
akey = $(a).attr("sortkey");
bkey = $(b).attr("sortkey");
if (akey == bkey) return 0;
if (akey < bkey) return -1;
if (akey > bkey) return 1;
});
您正在比较字符串。 比较字符串时,您得到以下信息:
"10" < "2"
true
而是将字符串强制为以10为底的整数:
parseInt("10", 10) < parseInt("1", 10)
false
试试这个:
$("#sortable3, #sortable4").children().sortDomElements(function(a,b){
akey = parseInt(($(a).attr("sortkey"), 10);
bkey = parseInt($(b).attr("sortkey"), 10);
if (akey == bkey) return 0;
if (akey < bkey) return -1;
if (akey > bkey) return 1;
});
应该修复它。
尝试将密钥转换为数字。
akey = parseInt($(a).attr("sortkey");
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.