jQuery Tablesorter Uncaught TypeError: Невозможно установить свойство 'count' из неопределенного - PullRequest
7 голосов
/ 11 октября 2011

Я использую плагин jQuery TableSorter и получаю следующую ошибку Uncaught TypeError: Cannot set property 'count' of undefined с этим кодом:

$(document).ready(function () {
    var copyThead = $(".uiGridContent thead").html();
    copyThead = '<table><thead>' + copyThead + '</thead></table>';
    $(".uiGridHeader").html(copyThead);
    $(".uiGridContent table").tablesorter();
    $(".uiGridContent table thead").hide();
    $(".uiGridHeader th").click(function () {
        // Get updated HTML
        var FindcopyThead = $(".uiGridContent thead").html();
        var NewcopyThead = '<table><thead>' + FindcopyThead + '</thead></table>';
        $(".uiGridHeader").html(NewcopyThead);

        var index = $(".uiGridHeader th").index(this);
        var sorting = [[index, 0]];
        $(".uiGridContent table").trigger("sorton", [sorting]);
        return false;
    });
});

и HTML-код:

<div class="uiGrid">
    <div class="uiGridHeader">
        <!-- NEW HEADER GOES HERE -->
    </div>
    <div class="uiGridContent">
        <table class="list sortable">
            <thead>
                <tr>
                    <th scope="col"><input type="checkbox" id="checkall" /></th>
                    <th scope="col">Name</th>
                    <th scope="col">Post Code</th>
                    <th scope="col">SIC Code</th>
                    <th scope="col">&#8470; of Employees</th>
                    <th scope="col"></th>
                    <th scope="col"></th>
                </tr>
            </thead>
            <tbody>
<!-- ROWS -->

Причина, по которой я копирую заголовок таблицы, заключается в том, что мне нужно разделить заголовок, чтобы структура моего приложения работала. С этой частью все в порядке НО, потому что классы и т. Д. Добавляются к исходным заголовкам. Мне нужно постоянно обновлять HTML новыми , это прекрасно работает . Но я получаю ошибку? Есть идеи почему или как это исправить? Спасибо

Ответы [ 2 ]

4 голосов
/ 19 ноября 2013

Я получаю ту же ошибку.Мне потребовалась минута, чтобы понять, что значение, которое вы должны передать, представляет собой массив из трех глубин:

$('table').trigger('sorton', [[[1,1]]]);

В отличие от начальной опции сортировки:

$('table').tablesorter({
    sortList: [[1,1]]
});

Когда вы добавляетеДля новых данных в таблице обязательно:

$('table').trigger('update').trigger('appendCache');

Однако я не смог заставить проигрыватель таблиц работать хорошо после динамического добавления новых столбцов.Вместо этого в этих случаях я должен позволить jQuery отменить привязку всего, чтобы я мог повторно инициировать:

$('table').remove().appendTo('body').tablesorter({ ...
2 голосов
/ 11 октября 2011

Есть три проблемы.Индекс возвращает -1, установка HTML каждый раз удаляет события, которые вы привязали к голове, и, поскольку вы запускаете событие sorton, вам нужно самостоятельно отслеживать направление.

Вот мой кодНадеюсь, это поможет.

var copyThead = $(".uiGridContent thead").html();
copyThead = '<table><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() {
    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 NewcopyThead = '<table><thead>' + FindcopyThead + '</thead></table>';
    $(".uiGridHeader").html(NewcopyThead);
    bindClick();
}

bindClick();
...