繁体   English   中英

使用jQuery对li进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM