Ошибка jQuery TableSorter Plugin при инициализации: невозможно прочитать свойство '0' из undefined - программирование
Подтвердить что ты не робот

Ошибка 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>

Любая идея, почему я получаю это и как я могу заставить плагин работать снова?

спасибо

4b9b3361

Ответ 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'