2009-07-17 6 views
0

Ich habe eine Tabellejquery Zugriff auf eine benutzerspezifische Sammlung über Tabellenindex?

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

das haben wir oft: Daten nicht in einer Reihe und ihre Spalten getrennt ist es oft, dass die Daten in verschiedenen Reihen, aber in derselben td Positionen (weil verbundenen Daten unter geschrieben sollten sich). So

Ich dachte, wenn ich den Index haben, ist es möglich, einen Filter der Klasse und .get(theIndex) auf jeder tr-Reihe zu bekommen, die Daten aus dem td einzelnen

zu extrahieren Aber ist es eine einfache Möglichkeit? -> Ich möchte die Daten, die zusammen gehören, in einem Schritt extrahieren -> und danach vielleicht in einem Array/Jquery-Set?

Irgendeine Idee? (Ich kann keine IDs hinzufügen - ich habe nur den Index von td und classNames).

Antwort

0

Es ist wirklich schwierig zu verstehen, was Sie erreichen möchten. Wenn Sie die bestimmte Zeile kennen, die Sie zugreifen möchten, können Sie immer das tun,

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

Sie auch alle tds zugreifen können die gleiche Klasse Namen.

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

, wie man Zugang nur die Zeile und die nur durch className definierte tds ist klar, aber zwischen verschiedenen Zeilen suchen, um die Daten aus der Tabelle zu extrahieren td index ist das Problem –

+0

Index des TD ist nicht ausreichend, um eine Zelle eindeutig zu identifizieren. Z.B. Der Index von 2 kann die letzte Zelle in der ersten Reihe ODER die letzte Zelle in der dritten Reihe bedeuten. Wie entscheidet man? Sie benötigen zusätzliche Informationen, um das Element zu finden. – SolutionYogi

+0

ok call itt nicht index: rufe it position: aus allen rows der inhalt der td mit der position 2 (was bedeutet wenn von 1 -> jede mittlere spalte) –

0

Ich bin mir nicht sicher, ob dies ist, was Sie suchen, aber diese Funktion, ein bestimmtes Tabellenelement Bezug gegeben, und nullbasierten Index, werden eine Anordnung von Zellen in der jeweiligen Spalte zurück. Lass es mich wissen, wenn das Sinn macht. Hier

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

    return cells;   
} 
1

ist wahrscheinlich das, was Sie suchen:

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

Das obige Beispiel geben Sie Vorname 2 und Nachname 2 von den mehreren Zeilen (td index = 2)

+0

+1 für nth-child. Ich habe diesen Selektor in meiner Antwort vergessen. – sixthgear

+0

halten css selector cheat sheet in der nähe :) Kommt in handy. Erinnere dich auch nicht an meinen Kopf. –