JQuery按名称对元素排序

JQuery按名称对元素排序,jquery,sorting,Jquery,Sorting,我将按名称对页面上的元素进行排序。这是我的代码: 我使用charCodeAt()来对具有UTF-8值的元素进行排序,比如波斯语 有时我会得到错误的答案。 正如你在小提琴上看到的,“Windows Phone”必须在“Windows Mobile”和“AMD”之后 我认为应该对代码进行优化,以降低复杂性 有什么问题 JQuery: var itms_ind = 8; for (i = 0; i <= itms_ind; i++) { var first = $('.con

我将按名称对页面上的元素进行排序。这是我的代码:

  • 我使用
    charCodeAt()
    来对具有UTF-8值的元素进行排序,比如波斯语
有时我会得到错误的答案。 正如你在小提琴上看到的,“Windows Phone”必须在“Windows Mobile”和“AMD”之后

我认为应该对代码进行优化,以降低复杂性

有什么问题

JQuery:

var itms_ind = 8;   

for (i = 0; i <= itms_ind; i++) {
    var first = $('.container div label:eq(0)');
    var first_char1_int = first.text().substr(0, 1).toLowerCase().charCodeAt();
    var first_char2_int = 
        first.text().substr(first.text().indexOf(' ') + 1, 1).toLowerCase().charCodeAt();

    for (j = 0; j <= itms_ind; j++)
        {
            $('.container div label').each(function() {
                var current = $(this);
                var current_char1_int = current.text().substr(0, 1).toLowerCase().charCodeAt();
                var current_char2_int = current.text().
                    substr(current.text().indexOf(' ') + 1, 1).toLowerCase().charCodeAt();

                if ((current_char1_int < first_char1_int)){
                    first.parent().before(current.parent());    
                } else
                if ((first_char1_int == current_char1_int)){
                    if (first_char2_int < current_char2_int)
                        current.parent().after(first.parent());
                }
            });
        }
}
var-itms_ind=8;

对于(i=0;i尝试基本排序,如

var els = $('.container div').get();

els.sort(function(el1, el2){
    return $(el1).text().trim().localeCompare($(el2).text().trim())
})

$('.container').append(els)

演示:

尝试一种基本的排序方法,如

var els = $('.container div').get();

els.sort(function(el1, el2){
    return $(el1).text().trim().localeCompare($(el2).text().trim())
})

$('.container').append(els)
演示:

检查

我完全改变了你的排序方案

var items = [];
$('.container div label').each(function(){
    $this = $(this);
    items.push($this.text());

});
items.sort();
检查

我完全改变了你的排序方案

var items = [];
$('.container div label').each(function(){
    $this = $(this);
    items.push($this.text());

});
items.sort();

始终将相关代码放在问题中,而不仅仅是隐藏在小提琴中。可能的重复:这是我的选择:-始终将相关代码放在问题中,而不仅仅是隐藏在小提琴中。可能的重复:这是我的选择:-+1,但我怀疑OP也希望排序不区分大小写。+1,但我怀疑OP也希望排序case不敏感。