Ошибка плагина jQuery TableSorter при инициализации: невозможно прочитать свойство '0' из неопределенного - PullRequest
16 голосов
/ 16 января 2012

Я хочу отсортировать свою таблицу с помощью 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>

Итак, как вы можете видеть, моя таблица пуста, только что имел заголовок. Поэтому я запускаю TableSorter с пустой ячейкой с:

$("table#stats").tablesorter({ sortList: [[0,0]]});

и сразу же я получаю эту ошибку:

jquery.tablesorter.min.js:4 Uncaught TypeError: Cannot read property '0' of undefined

К вашему сведению, загружены мои js:

<!-- Grab Google CDN's 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>

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

Thx

Ответы [ 6 ]

14 голосов
/ 18 января 2012

Вам нужно иметь данные в вашей таблице, прежде чем вы сможете вызывать метод sortList.Это связано с тем, что в этом методе применяется индексация, которая не найдет никаких записей, если данные отсутствуют, и выдает ошибку «Cannot read свойство '0' undefined».

12 голосов
/ 30 октября 2012

Использование табличного сортировщика не рекомендуется, когда таблица пуста, поэтому вы можете использовать это условие:

if ($("table#stats tbody tr").length > 0)
   $(this).tablesorter({ sortList: [[0,0]]});
8 голосов
/ 28 июня 2013

Вам не нужно , чтобы иметь данные в вашей таблице.Просто инициализируйте вашу таблицу следующим образом:

$("table#stats").tablesorter();

Затем, после того, как вы вставили данные в таблицу, вы должны сообщить плагину, что таблица обновлена, и отсортировать ее:

$("table#stats").trigger("update");
var sorting = [[0,0]];
$("table#stats").trigger("sorton",[sorting]);
4 голосов
/ 25 июля 2014

Мне не удалось заставить это работать, поэтому я установил тайм-аут при инициализации для TableSorter ...

setTimeout(function() {$('table').tablesorter();}, 10000);
2 голосов
/ 22 апреля 2014

Я получил ошибку "не могу прочитать свойство 'format' из undefined". В моем случае ошибка произошла из-за другого количества 'td's в' tbody ', чем в' thead '

2 голосов
/ 19 октября 2012

Я заметил, что это происходит с последней версией (2.0.5b, я думаю), найденной в http://tablesorter.com/,, но этого не произошло в более ранних версиях (у меня есть копия 2.0.3, и это работало в этом). Тем не менее, существует разветвленная версия в https://github.com/Mottie/tablesorter,, которая гораздо лучше поддерживается и не имеет этой ошибки.

...