Сохранить выбор таблиц в cookie - PullRequest
0 голосов
/ 13 октября 2011

Я использую плагин jQuery Tablesorter для сортировки своих таблиц и хотел бы сохранить выбор в куки, используя плагин jquery cookie.

Кто-нибудь делал что-нибудь подобное? Или бы знать, как это сделать?

Я выполняю сортировку, используя событие click(), поскольку моя таблица разбита на части, например:

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();
}

Так что где-то в функции мне нужно записать выбор в куки.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

в вашей функции вы можете добавить $.cookie("table_sort_list", sorting); сразу после var sorting

и в вашей функции, где вы начинаете свою таблицу, вы можете сделать что-то вроде

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

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

Другое, возможнолучший способ получить новый порядок сортировки, как описано в jQuery tablesorter, как найти объект sortList

0 голосов
/ 31 мая 2013

Если вы хотите сохранить сортировку, чтобы можно было повторно отсортировать таблицу при будущих посещениях, теперь в Tablesorter встроена опция saveSort, которая использует локальное хранилище (и файлы cookie в качестве запасного варианта). См. этот ответ для получения дополнительной информации.

...