По умолчанию естественная сортировка разбивает содержимое на блоки для сравнения, но эти блоки задаются «кусками» текстовых символов и чисел. Когда встречается нетекстовый/числовой символ, он не разбивается.
Таким образом, в вашем демо значения «#Elephant» и «0Zebra» своего рода нарушает эти значения следующим образом:
#Elephant => [ '#Elephant' ]
0Zebra => [ '0', 'Zebra' ]
, когда сравнение делается это видит «#Elephant» является числом, но «0» является числовым, поэтому на основе ascii comparison нечетные (предполагается, что в алфавитном порядке) значения больше числовых значений; и таким образом «#Elephant» сортируется после «0Zebra».
Я знаю, что вы не просили объяснений, но самый простой способ обойти это - изменить сортировщик. Используйте простой текст сортировщик вместо (demo):
$('table').tablesorter({
textSorter: {
2: $.tablesorter.sortText
}
});
Update: Если вы хотите специфической сортировки, вам необходимо изменить порядок значения ASCII. Я настроил this demo, который специфичен для данных, он меняет только первый символ.
var reorderAscii = function(x){
if (x === '') { return x; }
var v = x.charCodeAt(0),
z = x.charCodeAt(0);
if (z > 90 && z < 97) {
// move [\]^_` to replace ABCDEF
v = v - 26;
} else if (z > 122 && z < 127) {
// move {|}~ to replace GHIJ
v = v - 52;
} else if (z > 47 && z < 58) {
// moveto replace KLMNOPQRST
v = v + 27;
}
return z !== v ? String.fromCharCode(v) + x.slice(1) : x;
};
$('table').tablesorter({
theme: 'jui',
headerTemplate: '{content}{icon}',
// ignoreCase must = true
ignoreCase: true,
textExtraction: function(node, table, cellIndex){
var t = $.trim($(node).text().toLowerCase());
return cellIndex === 2 ? reorderAscii(t) : t;
},
textSorter: function (a, b) {
if (a == b) { return 0; }
if (a == '') { return 1; }
if (b == '') { return -1; }
return a > b ? 1 : -1;
},
widgets: ['uitheme', 'zebra', 'columns'],
widgetOptions: {
zebra: [
"ui-widget-content even",
"ui-state-default odd"]
}
});
Я забыл упомянуть, что при использовании любого другого сортировщика рядом с буквенно-цифровым сортировщика, пустая клетка и клетка сортировки строки игнорируются. Мне нужно включить это в документацию.
Какой особый символ вы имеете в виду? – Mottie
любой особый символ .... – Karthik
http://jsfiddle.net/abkNM/4099/ проверьте этот URL, столбец животных ... так что вы можете получить идею ... здесь сначала это число, затем специальный символ, а затем алфавит ... Но мой приоритет подобен специальному символу, числу и алфавиту .... – Karthik