Juery解決tablesorter中文排序和字符范圍的方法
本文實(shí)例講述了Juery解決tablesorter中文排序和字符范圍的方法。分享給大家供大家參考。具體分析如下:
tablesorter是jQuery插件中比較優(yōu)秀的一款表格排序插件,我相信大家都使用過(guò)或有所耳聞,我在這里就不過(guò)多介紹了,詳細(xì)信息可以看看官方網(wǎng)站:http://tablesorter.com/docs/(其中的demo做得比較完整)。
在使用了tablesorter開(kāi)發(fā)的幾個(gè)項(xiàng)目中,發(fā)現(xiàn)了兩種類型的排序存在問(wèn)題,如下:
第一個(gè)問(wèn)題是無(wú)法對(duì)中文字符進(jìn)行排序,這是因?yàn)樵趯?duì)字符排序時(shí),是使用的unicode值進(jìn)行的字符大小比較,代碼如下:
Js代碼
function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); }; function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); };
而我們想要得到的結(jié)果是按漢字拼音進(jìn)行順序進(jìn)行排序,因此我們將代碼修改為以下代碼即可:
Js代碼
function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); }; function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); };
localeCompare方法是JS自帶的方法,不用多說(shuō),望文生義就知道這個(gè)方法是根據(jù)當(dāng)前區(qū)域下對(duì)字符的大小進(jìn)行比較,不過(guò)這個(gè)方法無(wú)法處理多音字。
第二個(gè)問(wèn)題是無(wú)法對(duì)超出了范圍的數(shù)值型數(shù)據(jù)進(jìn)行排序,這是因?yàn)樵谶M(jìn)行數(shù)值類型轉(zhuǎn)換時(shí),存在數(shù)據(jù)值失真的情況,例如:
Js代碼
alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006 alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006
這樣的偏差會(huì)使得排序結(jié)果不準(zhǔn)確,為了避免這種問(wèn)題,應(yīng)該不使用原始值進(jìn)行比較,而是應(yīng)該引入權(quán)值,數(shù)值從左到右,每一位數(shù)值對(duì)應(yīng)的權(quán)值遞減,然后根據(jù)權(quán)值和原始值計(jì)算出的新值用于比較,這就只需要修改formatFloat方法就能解決這個(gè)問(wèn)題了。
Js代碼
this.formatFloat = function(s) { // TODO var i = parseFloat(s); return (isNaN(i)) ? 0 : i; };
希望本文所述對(duì)大家的jQuery程序設(shè)計(jì)有所幫助。
- jQuery排序插件tableSorter使用方法
- tablesorter.js表格排序使用方法(支持中文排序)
- 修復(fù)jQuery tablesorter無(wú)法正確排序的bug(加千分位數(shù)字后)
- jQuery表格排序組件-tablesorter使用示例
- jquery tablesorter.js 支持中文表格排序改進(jìn)
- TableSort.js表格排序插件使用方法詳解
- javascript 表格排序和表頭浮動(dòng)效果(擴(kuò)展SortTable)
- Auntion-TableSort國(guó)人寫的一個(gè)javascript表格排序的東西
- jQuery html表格排序插件tablesorter使用方法詳解
相關(guān)文章
Enter回車切換輸入焦點(diǎn)實(shí)現(xiàn)思路與代碼兼容各大瀏覽器
這篇文章主要介紹了Enter回車切換輸入焦點(diǎn)實(shí)現(xiàn)思路與代碼并兼容各大瀏覽器,需要的朋友可以參考下2014-09-09深入理解jQuery中l(wèi)ive與bind方法的區(qū)別
本篇文章主要是對(duì)jQuery中l(wèi)ive與bind方法的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12jQuery動(dòng)態(tài)顯示和隱藏datagrid中的某一列的方法
動(dòng)態(tài)顯示和隱藏datagrid中的某一列的方法有很多,在接下來(lái)的文章中為大家介紹下jQuery是如何實(shí)現(xiàn)的2013-12-12jquery UI Datepicker時(shí)間控件沖突問(wèn)題解決
這篇文章主要介紹了jquery UI Datepicker時(shí)間控件沖突問(wèn)題的解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12原生Aajax 和jQuery Ajax 寫法個(gè)人總結(jié)
AJAX:即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。本文重點(diǎn)給大家介紹原生Aajax 和jQuery Ajax 個(gè)人總結(jié),一起看看吧2017-03-03jQuery使用eraser.js插件實(shí)現(xiàn)擦除、刮刮卡效果的方法【附eraser.js下載】
這篇文章主要介紹了jQuery使用eraser.js插件實(shí)現(xiàn)擦除、刮刮卡效果的方法,結(jié)合實(shí)例形式分析了jQuery.eraser.js插件的功能、使用方法與相關(guān)注意事項(xiàng),并附帶eraser.js插件源碼供讀者下載使用,需要的朋友可以參考下2017-04-04jQuery插件jFade實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)的圖片高亮其它變暗
本文給大家介紹的是一款重點(diǎn)突出的jQuery特效插件效果,使用jFade實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)的圖片高亮其它變暗,非常實(shí)用,推薦給小伙伴們參考下。2015-03-03