2012-01-16 29 views
16

Quiero ordenar mi tabla con jQuery Plugin TableSorter. Así que me sale esta tabla:jQuery TableSorter Error de complemento en init: no se puede leer la propiedad '0' de undefined

<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> 

Así que como pueden ver mi mesa está vacía, acaba de tener un encabezado. Así que init tablesorter con celda vacía con:

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

e inmediatamente me sale este error:

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

FYI, hay mis js cargados:

<!-- 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> 

Cualquier idea de por qué obtener esto y cómo puedo hacer que el complemento funcione de nuevo?

Thx

+0

suena como si su función de tablesorter no estuviera cargada correctamente, ¿puede verificar los archivos javascript que se cargan en su página? – JoJa

+0

@JoJa: Acabo de comprobar. Parece estar bien. Edito la publicación para incluirla;) – Clawfire

+0

y si pones un vacío con vacío allí? – JoJa

Respuesta

15

Es necesario tener datos de la tabla antes de llamar al método sortList en él. Esto se debe a que aplica una indexación en este método que no encontrará ningún registro si no hay datos presentes y arrojará el error "No se puede leer la propiedad '0' de indefinido".

2

Me he dado cuenta de que esto sucede con la última versión (2.0.5b, creo) que se encuentra en http://tablesorter.com/, pero no sucedió en versiones anteriores (tengo una copia de 2.0.3, y funcionó en ese). Sin embargo, hay una versión bifurcada en https://github.com/Mottie/tablesorter, que se mantiene mucho mejor, y no tiene este error.

12

No es un buen uso tablesorter cuando hay una mesa vacía, por lo que puede utilizar esta condición:

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

Usted no necesita tener datos de la tabla. Sólo initilize su mesa de esa manera:

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

Entonces, después de haber insertado los datos de la tabla, debe decirle al plugin que la tabla se actualiza y ordenarla:

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

Tengo una error "no se puede leer la propiedad 'formato' de indefinido". En mi caso, el error ocurrió debido a un número diferente de 'td en' tbody 'que en' thead '

3

No pude conseguir nada de esto para trabajar, así que establecí un tiempo de espera en la inicialización para tablesorter ...

setTimeout(function() {$('table').tablesorter();}, 10000); 
+1

Esa es la única publicación de docenas publicada en stackoverflow que hizo el truco para mí;) ¡Gracias! – baraka

+0

funciona pero solo puede funcionar a veces solo ... – anonymous5671

Cuestiones relacionadas