2010-03-02 6 views
2

Pour une raison quelconque, chaque fois que j'essaie de compter le nombre de lignes dans un tableau il renvoie toujours 1. J'ajoute et supprime dynamiquement des lignes à la table , donc je suis commence à penser qu'il ne fait que compter le nombre de lignes initialement configuré dans la table. voici le code que j'utilise.jQuery table nombre de lignes renvoie toujours la valeur de 1

$(".elementDelRowButton").live ('click', function (event) { 

console.log ($(this).closest('table').length); 
        if ($(this).closest('tr').index()!=0) { 
         $(this).parent().parent().remove(); 
        } 

      }); 

J'ai essayé d'utiliser la taille, la longueur et d'autres variations, il retourne toujours 1.

Voici le code HTML:

<table id="element_items"><tr> 
    <td><input type="radio" name="radio" /></td> 
    <td><input type="text" value="RadioItem"/></td> 
    <td><span class="elementAddRowButton">+</span>/<span class="elementDelRowButton">-</span></td> 
</tr> 
</table> 

Répondre

4

Il pourrait être qu'il ya un tbody dans votre source environnante toutes vos lignes. Essayez ceci:

console.log($(this).closest('table').find('tr').length); 

Par ailleurs, le "this.parent() parent() remove().." Semble dangereux. Vous pouvez utiliser un sélecteur avec la fonction "la plus proche".

+0

La meilleure solution possible – behz4d

2

console.log ($ (this) .closest ('table'). Longueur); retourne juste un jeu de jquery qui contient la balise la plus proche "table" ... Le jeu contient un élément indé, la table elle-même, comme le plus proche retourne le premier parent qui correspond

console.log ($ (this) .closest (. 'table') enfants (. "tr") la longueur doit donne les lignes comptent

0

Merci à tous .. cela a fonctionné pour ma situation:

console.log ($ (this) .closest ('table') .find ('tr'). longueur);

Questions connexes