我要按照他们的名字对页面上的元素进行排序。这是我的代码:http://jsfiddle.net/q3a9gmm6/1/
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());
}
});
}
}
答案 0 :(得分:3)
尝试基本排序,如
var els = $('.container div').get();
els.sort(function(el1, el2){
return $(el1).text().trim().localeCompare($(el2).text().trim())
})
$('.container').append(els)
演示:Fiddle
答案 1 :(得分:0)
我完全改变了你的排序解决方案。
var items = [];
$('.container div label').each(function(){
$this = $(this);
items.push($this.text());
});
items.sort();