web-dev-qa-db-ja.com

initでのjQueryTableSorterプラグインエラー:未定義のプロパティ「0」を読み取れません

jQueryプラグイン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>

なぜこれを取得するのか、プラグインを再び機能させる方法はありますか?

どうも

16
Clawfire

SortListメソッドを呼び出す前に、テーブルにデータが含まれている必要があります。これは、このメソッドでインデックスを適用すると、データが存在しない場合はレコードが見つからず、「未定義のプロパティ「0」を読み取れません」というエラーがスローされるためです。

15
JoJa

空のテーブルがある場合はtablesorterを使用するのは適切ではないため、次の条件を使用できます。

if ($("table#stats tbody tr").length > 0)
   $(this).tablesorter({ sortList: [[0,0]]});
12
Michael Aguilar

あなた必要ありませんテーブルにデータを入れる。そのようにテーブルを初期化するだけです。

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

次に、テーブルにデータを挿入した後、テーブルが更新されたことをプラグインに通知して並べ替える必要があります。

$("table#stats").trigger("update");
var sorting = [[0,0]];
$("table#stats").trigger("sorton",[sorting]);
8
Eneas Gesing

これを機能させることができなかったので、tablesorterの初期化にタイムアウトを設定しました...

setTimeout(function() {$('table').tablesorter();}, 10000);
4
Amaan

これは http://tablesorter.com/ にある最新バージョン(2.0.5bだと思います)で発生することに気づきましたが、以前のバージョンでは発生しませんでした(私は2.0.3のコピー、そしてそれはその中で働いた)。ただし、 https://github.com/Mottie/tablesorter にフォークバージョンがあります。これははるかに適切に保守されており、このエラーは発生しません。

2
pinksy

「未定義のプロパティ 'フォーマット'を読み取れません」というエラーが発生しました。私の場合、エラーは「tbody」と「thead」の「td」の数が異なるために発生しました。

2
Greg