2009-12-22 11 views
0

J'ai une table et je veux compter combien de tr je cache.jQuery question de compteur

Le code:

<rich:jQuery query="ready(function() { 
var i = 0; 
jQuery('#inbox:_inboxTable_').find('span[title=isArchivedStatusPlusIncludeArchive]').each(function(i, o){ 
     if (jQuery(this).text() == 'true+false'){ 
       i++; 
       alert(i); 
       jQuery(this).parent().parent().parent().fadeOut(); 
     } 
    jQuery('#inbox').find('span[title=documentProccesedCountTitle]').html(i+' documents are beeing processed to be removed from the inbox'); 
}); 
})"/> 

Pour une page avec 10 tr, dans mon test 7 sont cachés par cette partie du code, mais 'i' est 10 au lieu de 7 à la dernière étape ...

Je n'en ai aucune idée ... pourquoi? Est-ce que quelqu'un voit la raison?

Merci d'avance.

+1

Quel est votre code html? – kgiannakakis

+0

c'est une riche table de données de jsf. –

Répondre

1

i=10 parce que vous utilisez comme un indice de la fonction, essayez d'utiliser j ou quelque chose d'autre:

jQuery('#inbox:_inboxTable_').find('span[title=isArchivedStatusPlusIncludeArchive]').each(function(j, o){ 
... 
} 

En outre, au lieu d'utiliser jQuery(this).parent().parent().parent().fadeOut(); vous pouvez utiliser le closestjQuery(this).closest('tr').fadeOut(); (si le tr est votre cible).

+0

Je savais que c'était quelque chose de petit :) Merci beaucoup. –

+0

Et à propos de la 2ème partie de votre réponse: le plus proche ('tr') a un comportement nuisible dans Firefox. –

+0

Je n'ai jamais eu de problème pour utiliser 'les plus proches ', quels problèmes éprouvez-vous ou avez-vous entendu parler? Je suis curieux. – Mottie

2

Qu'en est-:

$("#table_id tr:hidden").length 
+0

Il y a aussi d'autres tr cachées, donc je ne peux pas compter sur cette solution. –