tablesorter是jQuery插件中比較優(yōu)秀的一款表格排序插件,我相信大家都使用過(guò)或有所耳聞,我在這里就不過(guò)多介紹了,詳細(xì)信息可以看看官方網(wǎng)站:http://tablesorter.com/docs/(其中的demo做得比較完整)。
在使用了tablesorter開(kāi)發(fā)的幾個(gè)項(xiàng)目中,發(fā)現(xiàn)了兩種類(lèi)型的排序存在問(wèn)題,如下:
第一個(gè)問(wèn)題是無(wú)法對(duì)中文字符進(jìn)行排序,這是因?yàn)樵趯?duì)字符排序時(shí),是使用的unicode值進(jìn)行的字符大小比較,代碼如下:
Js代碼
而我們想要得到的結(jié)果是按漢字拼音進(jìn)行順序進(jìn)行排序,因此我們將代碼修改為以下代碼即可:
Js代碼
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ù)值類(lèi)型轉(zhuǎn)換時(shí),存在數(shù)據(jù)值失真的情況,例如:
Js代碼
這樣的偏差會(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代碼
希望本文所述對(duì)大家的jQuery程序設(shè)計(jì)有所幫助。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com