2011-10-13 48 views
0

我使用jQuery Tablesorter插件對我的表進行排序,並希望使用jquery cookie插件將選擇內容保存到cookie中。在cookie中保存tablesorter選項

有沒有人做過類似的事情?或者會知道如何做到這一點?

我使用click()事件作爲我的表分割成幾部分e.g排序:

function setupTablesorter() { 
    var currentSort; 
    var cookieSortList = $.evalJSON($.cookie("table_sort_list")); 
    if (cookieSortList == null) 
     cookieSortList = [[1, 0]] 

    $('table').each(function (i, e) { 
     var myHeaders = {} 
     $(this).find('th.nosort').each(function (i, e) { 
      myHeaders[$(this).index()] = { sorter: false }; 
     }); 
     $(this).tablesorter({ sortList: cookieSortList, widgets: ['zebra'], headers: myHeaders }).bind("sortEnd", function (sorter) { 
      currentSort = sorter.target.config.sortList; 
     }); 
    }); 

    $(".uiGridHeader th").click(function() { 
     $.cookie("table_sort_list", $.toJSON(currentSort)); 
    }); 

    console.log(currentSort); 
} 

function setupFixedHeader() { 

    var copyThead = $(".uiGridContent thead").html(); 
    var copyCol = $(".uiGridContent colgroup").html(); 
    copyThead = '<table>' + copyCol + '<thead>' + copyThead + '</thead></table>'; 
    $(".uiGridHeader").html(copyThead); 
    $(".uiGridContent table").tablesorter(); 
    $(".uiGridContent table thead").hide(); 
    function bindClick() { 
     $(".uiGridHeader th").click(theadClick); 
    } 
    var direction = 0; 
    function theadClick() { 
     console.log('click'); 
     if (direction) { 
      direction = 0; 
     } else { 
      direction = 1; 
     } 
     var index = $(this).index(); 
     var sorting = [[index, direction]]; 

     $(".uiGridContent table").trigger("sorton", [sorting]); 

     var FindcopyThead = $(".uiGridContent thead").html(); 
     var FindcopyCol = $(".uiGridContent colgroup").html(); 
     var NewcopyThead = '<table>' + FindcopyCol + '<thead>' + FindcopyThead + '</thead></table>'; 
     $(".uiGridHeader").html(NewcopyThead); 
     bindClick(); 
    } 
    bindClick(); 
} 

所以在功能某處我需要記錄的選擇在Cookie中。

回答

1

在你的功能,你可以在這裏你初始化你的表,你可以做類似

var cookieSortList= $.cookie("table_sort_list"); 
if(cookieSortList== null) 
    cookieSortList = [] 

$("table").tablesorter({ 
    sortList: cookieSortList 
}); 

另一個,也許尤爲明顯方式​​剛過您var sorting

,並在你函數添加$.cookie("table_sort_list", sorting);獲得新的排序訂單如上所述jQuery tablesorter how to find sortList object

+0

發生此錯誤:未捕獲的類型錯誤:無法設置未定義的屬性「計數」並檢查其值爲:2%2C1任何想法?問題是什麼?我甚至嘗試過包裝cookie:'var cookieSortList = [[$ .cookie(「table_sort_list」)]];'但仍然出現錯誤。 – Cameron

+0

我也在使用您發佈的問題中提到的綁定,但似乎沒有使用正確的數據 – Cameron

+0

請參閱OP以獲取我的更新代碼 – Cameron

0

如果您想保存排序,以便您可以在將來的訪問中重新排序表,現在有一個saveSort選項n內置於Tablesorter中,使用本地存儲(並將Cookie作爲後備)。有關更多信息,請參閱this answer