7
votes

JQuery + TableSorter: erreur lorsque la table est vide

Table à plugin de JQuery ne semble pas gérer une situation où elle est attachée à une table vide. Y a-t-il une solution crue autour de cela?

Dans mon application, l'utilisateur peut filtrer et rechercher les données et éventuellement, il propose un critère de recherche qui ne renvoie aucune valeur. Dans ces situations, il serait agréable de "détacher" la tablesorter ou de résoudre ce problème de manière à résoudre le code de sorte qu'il fonctionne avec une table vide. P>

Je suis actuellement en train d'utiliser le plugin comme celui-ci: P>

Line: 3
Error: '0.length' is null or not an object


0 commentaires

5 Réponses :


10
votes

Je pense que vous pouvez le faire pour vous-même.

if ($("#transactionsTable").find("tbody").find("tr").size() > 0)


2 commentaires

BTW, j'ai trouvé une option traitant de tables vides. Le lien TableSorter.com/docs/example-empty-table.html démontre ce.


Son 2015 et le défaut existe toujours. J'ai utilisé l'approche de Tboi et ça a fonctionné bien.



3
votes

Le problème est lié au fait que plusieurs parties de la base de code utilisent des lignes [0] pour déterminer 1) nombre total de colonnes, 2) le type d'analyseur à utiliser par colonne (par exemple "texte" vs "chiffre").

jusqu'à ce que ce bogue soit réparé, voici une solution de contournement facile: p>

  1. Créez une fausse rangée dans chaque table avec des contenus tels que ("faux", 123, 123, 123, "faux"). Notez comment mon faux contenu correspond au "type" de la colonne pour éviter de dérouter le détecteur de type de colonne.
    tr.fake_row { 
        display: none; 
    } 
  2. Ajouter un style CSS pour rendre la fausse rangée non rendu:
    <tr class="fake_row"><td>fake</td><td>123</td></tr>


0 commentaires

2
votes

Une approche plus générique serait de remplacer le plugin TableSorter lui-même pour vérifier les tables vides (jusqu'à ce qu'ils fixent le problème). Voir cet article sur les méthodes de noyau JQuery Wedroply: http: //www.bennadel.com/blog/1624-ask-ben-overriding-core-jquery-methods.htm xxx


0 commentaires

1
votes

Ceci a été corrigé dans le dernier TableSorter ( Voir le numéro 95 ).


1 commentaires

En fait, j'utilise la version 2.0.5B, que je pense est la dernière version la plus récente, et c'est toujours un problème.



0
votes

Étant donné que les plugins écrasants sont toujours une mauvaise idée, voici une approche différente: si vous souhaitez simplement vous assurer que votre tableau de données contient des lignes de données réelles, le sélecteur JQuery: a () le travail fait aussi.

$('table.tablesorter:has(tbody tr)').tablesorter({
    // your tablesorter config here
});


0 commentaires