2009-07-17 5 views
0

J'ai une tablejquery accès à une collection spécifique à l'utilisateur via l'index de la table?

<table> 
<tr> 
    <td class="myA">Data...1a</td> 
    <td class="myA">Data...2a</td> 
    <td class="myA">Data...3a</td> 
</tr> 
<tr> 
    <td class="myB">Data...1b</td> 
    <td class="myB">Data...2b</td> 
    <td class="myB">Data...3b</td> 
</tr> 
<tr> 
    <td class="myC">Data...1c</td> 
    <td class="myC">Data...2c</td> 
    <td class="myC">Data...3c</td> 
</tr> 
</table> 

qui ont souvent nous: les données sont séparées pas dans une ligne et leurs colonnes il est souvent que les données sont dans des lignes différentes, mais dans les mêmes positions td (parce que les données connectées doivent écrites entre se).

Je pensais que si je l'index, il est possible d'obtenir un filtre de classe et .get(theIndex) sur chaque tr-ligne pour extraire les données de la td personne

Mais est-il un moyen facile? -> Je voudrais extraire les données qui appartiennent ensemble en une étape -> et après peut-être que c'est dans un ensemble de tableau/jquery?

Une idée? (Je ne peux pas ajouter d'identifiants etc - J'ai seulement l'index du td et le classNames).

Répondre

0

Il est vraiment difficile de comprendre ce que vous essayez d'atteindre. Si vous connaissez la ligne particulière que vous souhaitez accéder, vous pouvez toujours le faire,

var rowIndex = 1; 
$('table tr:eq(' + rowIndex + ') td').each(function() { /* cell for the row identified by rowIndex. */}); 

Vous pouvez également accéder à toutes les tds ayant le même nom de classe.

$('td.myB').each(function() { }); //Access all the cells having class 'myB'. 
+0

comment accéder la ligne seulement et le tds seulement défini par className est clair mais en cherchant entre des lignes différentes pour extraire les données appartenant à la table td index est le problème –

+0

l'index du TD n'est pas suffisant pour identifier une cellule de façon unique. Par exemple. l'indice de 2 peut signifier la dernière cellule de la première rangée OU la dernière de la troisième rangée. Comment décider? Vous avez besoin d'informations supplémentaires pour localiser l'élément. – SolutionYogi

+0

ok appel itt pas index: appelez-le position: de toutes les lignes le contenu de la td avec la position 2 (ce qui signifie si start de 1 -> chaque colonne du milieu) –

0

Je ne suis pas sûr que ce soit ce que vous cherchez, mais cette fonction, étant donné une référence d'élément de table particulier, et l'indice de base zéro, retourne un tableau de cellules dans cette colonne particulière. Faites-moi savoir si cela a du sens.

function get_table_column(table, index) { 
    cells = [] 
    $('tr', table).each(function() { 
     cells.push ($('td:eq(' + index + ')', this)); 
    }); 

    return cells;   
} 
1

Voici probablement ce que vous cherchez:

<html> 
    <head> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <td class="A">First Name 1</td> 
       <td class="A">First Name 2</td> 
       <td class="A">First Name 3</td> 
      </tr> 
      <tr> 
       <td class="A">Last Name 1</td> 
       <td class="B">Last Name 2</td> 
       <td class="B">Last Name 3</td> 
      </tr> 
     </table> 
     <script src="jquery-1.3.2.min.js"></script> 
     <script> 
     $(function() { 
      var idx = 2; 
      var data = []; 
      $("tr td:nth-child(" + idx +")") 
      .each(function() { 
       data[data.length] = $(this).text(); 
      }); 
      var person = { 
       firstName : data[0], 
       lastName : data[1] }; 

      alert (person.firstName + " " + person.lastName); 
     }); 
     </script> 
    </body> 
</html> 

L'exemple ci-dessus vous donnera prenom 2 et lastname 2 des lignes multiples (index td = 2)

+0

+1 pour nth-child. J'ai oublié ce sélecteur dans ma réponse. – sixthgear

+0

gardant la feuille de triche de sélecteur de css près par :) est commode. Je ne m'en souviens pas non plus sur ma tête. –

Questions connexes