2013-10-02 22 views
3

我正在使用jQuery Tablesorter 2.0 plugin創建一個可排序的表格...說書。 表格的第一行將是所有書籍的摘要,我希望它始終處於頂部。JQuery Tablesorter - 保持第一行不變

我需要自定義tablesorter的行爲,但我不認爲我可以/應該使用自定義分析器來做到這一點。我想我需要的是一個自定義的比較函數 - 可以讓我自己比較任意兩行,理想情況下也可以調用默認行爲,如果我所尋找的條件未得到滿足。

採樣算法會像這樣(但願我沒有反轉我的結果):

function customSort(lhs, rhs, table, column_index) { 
    if (lhs === 'magic_str') { 
     return -1; // Magic string wins 
    } 
    if (rhs === 'magic_str') { 
     return 1; // Magic string wins 
    } 
    return defaultSort(lhs, rhs, table, column_index); 
} 

現在,我知道有些JS,但還不足以撬動一個通俗圖書館開放和重寫它的部分,特別是在我加載原始文件後,將會放在最上面的一個補丁。 (這將是理想的)。而且,如果我能以任何其他方式完成這種行爲,我就會全神貫注。

回答

3

一個更簡單的解決方案是嘗試我的fork of tablesorter,只是把你不想排序到一個單獨的tbody的行 - 這不會與原始tablesorter一起工作。

<table class="tablesorter"> 
    <thead> 
     ... 
    </thead> 
    <tbody class="tablesorter-infoOnly"> 
     ... <!-- non-sorting tbody --> 
    </tbody> 
    <tbody> 
     ... 
    </tbody> 
</table> 

由於只有一排,你並不真的需要添加「的tablesorter-infoOnly」類名稱;它會阻止應用於它的列樣式。嘗試this demo並刪除tbody類名稱以查看其差異。

而僅供參考,您可以添加任意數量的tbodies到表格中。

+0

謝謝,看起來很有希望。我正在做一些額外的事情,比如有兩行標題,一個用於多列跨度的元目的,而不是排序。一列是隱藏的。另外,我添加和刪除了很多行,原來的tablesorter有時候會搞砸了。希望你不會介意,如果我聯繫你,如果我卡住了。 –

+0

標題中的兩行,info tbody,footer等應該不成問題。隱藏的列可能不是必需的;但這一切都取決於你想要用這些數據做什麼。如果你需要它,請隨時尋求幫助:) – Mottie

+0

好的,這是一個問題。我在隊伍中有兩排,我只想對第二隊進行排序。所以,我用這個設置:\t \t'header:{0:{sorter:「digit」},1:{sorter:「text」},2:{sorter:「text」},...}'。我相信這會應用到頂部標題行。就好像我需要'headers2'鍵,或者我應該指定我的標題單元的二維座標。希望這個問題是有道理的。我現在可以使用'headers'鍵來關閉兩個頭中第一個的排序,但是我不能使用相同的屬性來爲頭中的第二行指定數據類型。 'sortList'適用於? –