2009-05-28 6 views
1

ich die folgende HTML-Struktur haben (die erzeugt wird, und ich kann es nicht ändern):Top-Spalten-Ebene Wählen Sie aus einer Tabelle mit verschachtelten Tabellen jquery mit

<table id='tableID'> 
<tbody> 
    <tr> 
     <td> 
      <table>...</table> 
     </td> 
     <td> 
      <table>...</table> 
     </td> 
     <td> 
      <table>...</table> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <table>...</table> 
     </td> 
     <td> 
      <table>...</table> 
     </td> 
     <td> 
      <table>...</table> 
     </td> 
    </tr> 
    .... 
</tbody> 
</table> 

Was will ich tun, um alles zu bekommen Die äußeren Zeilen und für jede Spalte in der äußeren Zeile manipulieren den Inhalt. So habe ich so etwas wie:

var rows = $("#tableID > tbody > tr"); 
$.each(rows, function(n, row) 
{ 
    var columns = row.children("td"); 
    if (columns.length > 0) { 
      $.each(columns, function (i, column) 
      { 
       //do stuff 
      }); 
    } 
}); 

Das Problem, das ich habe, ist, dass das, wenn ich das Kind tds bekommen, es zu gierig ist und packt tds aus den verschachtelten Tabellen zu. Weiß jemand, wie ich das einschränken kann, damit ich nur die tds aus der aktuellen Reihe der äußeren Tabelle bekomme? Oder gibt es einen besseren Weg, dies zu tun?

Antwort

2
var rows = $("#tableID > tbody > tr"); 
rows.each(function(n, row) 
{ 
    $(row).children().each(// td implicit, since tr should only contain td 
     function (i, column) { 
      //do stuff 
      // Note, if you don't need a reference to row inside the function, 
      // you can loop directly over the tds by adding > td to the first 
      // selector and skip the outer loop. 
     }); 
    } 
}); 
+0

@Machine - Es gibt einen Syntaxfehler in Ihrem Code. "Spalten" ist nicht definiert. – ichiban

+0

Oh ja, habe vergessen, diesen Teil zu entfernen, wenn ich unnötige Variablen entfernt habe. Vielen Dank. Jetzt behoben – PatrikAkerstrand

+0

Ich markierte diese Antwort korrekt, da ich den Verweis auf die äußere Zelle wollte. – Temple

3

Sie können zweimal unnötigerweise loopen. Wenn die Idee darin besteht, jede Zelle zu ändern, die nicht Teil einer geschachtelten Tabelle ist, sollte dies funktionieren.

var cells = $("#tableID > tbody > tr > td"); 
$.each(cells, function(n, cell){  
    //do stuff   
}); 
Verwandte Themen