2013-08-23 52 views
1

我剛開始使用優秀的jQuery tablesorter腳本。這可能是一個愚蠢的問題,但我不知道如何指定點擊後列排序的順序。我並不是指列是按升序還是降序排序,而是按列排序的順序。用jQuery tablesorter點擊後指定不同的排序順序

例如,如果一個人點擊第2列,我可能想按第2列,第4列,第5列進行排序。但是,如果一個人點擊第3列,我可能想按第3列排序,然後列5,然後列4.

在此先感謝您的任何建議!

--MC

回答

0

我只能猜測,你是問如何將多個列進行排序?或者你的意思是你想讓其他列自動按照第一列進行排序?

如果想要知道如何對多個列進行排序,那麼默認情況下,按住鍵,然後單擊列按順序排序。您可以通過更改sortMultiSortKey選項(demo)來更改此鍵。

如果您想根據選定的列自動對多列進行排序,我建議您添加排序鏈接/按鈕來爲您完成此操作,否則您將從用戶處選擇這些選擇。嘗試這樣的事情(demo):

HTML

<button class="sort1">Sort 1-3</button> 
<button class="sort2">Sort 4-6</button> 

腳本

$('table').tablesorter(); 

$('.sort1').click(function(){ 
    $('table').trigger('sorton', [[ [1,0],[0,0],[2,0] ]]); 
}); 

$('.sort2').click(function(){ 
    $('table').trigger('sorton', [[ [3,1],[4,0],[5,0] ]]); 
}); 

或者,你可以使用sortAppend選項基本上將一列的排序到底各種各樣的。所以,如果你總是希望排序(如生產商)的特定列按字母順序之後,用戶排序另一列,只是初始化的tablesorter使用此選項:

$('table').tablesorter({ 
    sortAppend: [ [3,0] ] // 4th column (zero-based index) sort appended 
}); 

因此,如果用戶排在第二列,第四列排序添加後。基本上它就像觸發這樣的排序:[[ [1,0],[3,0] ]]

不幸的是,sortAppend選項存在於原始tablesorter中,但它的代碼缺失ref)。我在我的fork of tablesorter中修復了這個問題 - 請參閱this demo

或者,如果您希望排序是動態的,即在sortAppend會根據所選列的變化,現在你需要綁定到sortBegin事件中加入排序(demo; ref):

$('table').bind('sortBegin', function(e, tbl) { 

    var c = tbl.config, 
     list = c.sortList; 

    // add third column sort if not the initial sort, otherwise sort second column 
    // (zero based index) 
    list.push((list[0] && list[0][0] !== 2) ? [2, 0] : [1, 0]); 

}); 

當我有空時,我計劃在將來更容易做到這一點(see this issue)。

+0

感謝您的建議!我想根據點擊的第一列自動對多列進行排序。這是針對葡萄酒零售商的,因此客戶可能想按葡萄酒類型進行分類(例如,初始點擊「品種」欄),但也要讓生產者(相鄰列)按字母順序排序。 – user2712408

+0

我已經用一些替代品更新了我的答案:) – Mottie

+0

太棒了!非常感謝你:) :) :) – user2712408