Ошибка jQuery TableSorter Plugin при инициализации: невозможно прочитать свойство '0' из undefined
Я хочу сортировать таблицу с помощью jQuery Plugin TableSorter. Итак, я получаю эту таблицу:
<table id="stats" class="zebra-striped">
<thead>
<tr>
<th>Date</th>
<th>Annonce</th>
<th>Support</th>
<th>Nb Assoc.</th>
<th>Nb Transfo.</th>
<th>Cout</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Итак, как вы можете видеть, моя таблица пуста, просто был заголовок. Поэтому я инициализирую tableorter с пустой ячейкой с помощью
$("table#stats").tablesorter({ sortList: [[0,0]]});
и сразу я получаю эту ошибку:
jquery.tablesorter.min.js:4 Uncaught TypeError: Cannot read property '0' of undefined
FYI, там загружены мои js:
<!-- Grab Google CDN jQuery, with a protocol relative URL; fall back to local if necessary -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
<script src="js/bootstrap-dropdown.js"></script>
<script src="js/bootstrap-scrollspy.js"></script>
<script src="js/jquery.tablesorter.min.js"></script>
Любая идея, почему я получаю это и как я могу заставить плагин работать снова?
спасибо
Ответы
Ответ 1
Вам нужно иметь данные в своей таблице, прежде чем вы сможете вызвать метод sortList. Это связано с тем, что вы применяете индексирование в этом методе, который не найдет никаких записей, если нет данных, и это приведет к ошибке "Невозможно прочитать свойство" 0 "из undefined".
Ответ 2
Это не полезно использовать tablesorter, когда есть пустая таблица, поэтому вы можете использовать это условие:
if ($("table#stats tbody tr").length > 0)
$(this).tablesorter({ sortList: [[0,0]]});
Ответ 3
Вам не нужно, чтобы иметь данные в вашей таблице. Просто инициализируйте таблицу таким образом:
$("table#stats").tablesorter();
Затем после того, как вы вставили данные в таблицу, вы должны сообщить плагину, что таблица была обновлена и отсортирована:
$("table#stats").trigger("update");
var sorting = [[0,0]];
$("table#stats").trigger("sorton",[sorting]);
Ответ 4
Я не мог заставить это работать, поэтому я устанавливаю таймаут для инициализации для tablesorter...
setTimeout(function() {$('table').tablesorter();}, 10000);
Ответ 5
Я заметил, что это происходит с последней версией (2.0.5b, я думаю), найденной в http://tablesorter.com/, но это не было 't случается в более ранних версиях (у меня есть экземпляр 2.0.3, и он работал в этом). Тем не менее, существует разветвленная версия в https://github.com/Mottie/tablesorter, которая намного лучше поддерживается и не имеет этой ошибки.
Ответ 6
Я получил сообщение об ошибке "не могу прочитать формат" undefined ". В моем случае ошибка произошла из-за разного количества td в tbody, чем в 'thead'