2009-05-28 5 views
1

を使用して、ネストしたテーブルとテーブルからトップレベルの列を選択:私が何をしようとしています何私は(生成され、私は変更することはできません)、次のHTML構造を持っているjqueryの

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

は、すべて取得することです外部行の各列と、外部行の各列の内容を操作します。私がいる問題は、私は子供のTDSを得るとき、それはあまりにも貪欲だとあまりにもネストした表からTDSをつかむことである

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 
      }); 
    } 
}); 

:だから私のような何かを持っています。誰もがこれを制限して、外部テーブルの現在の行からtdsだけを取得できるようにする方法を知っていますか?または、これを行うためのより良い方法がありますか?

答えて

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は - あなたのコードの構文エラーがあります。 "列"は未定義です。 – ichiban

+0

ああ、忘れてしまった変数を削除したときにその部分を削除するのを忘れてしまった。ありがとう。今固定しました – PatrikAkerstrand

+0

私は外側のセルへの参照が必要なので、この答えを正しくマークしました。 – Temple

3

不必要に2回ループしている可能性があります。ネストした表の一部ではない各セルを変更するというアイディアがあれば、これはうまくいくはずです。

var cells = $("#tableID > tbody > tr > td"); 
$.each(cells, function(n, cell){  
    //do stuff   
}); 
関連する問題