2012-01-04 3 views
1

/wの最初のテーブルのすべての行の最初のTDを選択:私は、次の条件が満たされているすべてのテーブルの行の最初のTDを選択する必要がjQueryの

  1. TDはにCOLSPAN
  2. TDを持っていません最初のテーブルではなく、ネストされたもの

のいずれかの次は...私のため

$("table:first > td:first-child").not("[colspan]").css("background-color","red"); 
+0

あなたは[jsfiddle](http://jsfiddle.net/)上の例を投稿してもらえますか? –

+0

* "親の子セレクタも省略されています..." *いいえ、それはありません。左側のオペランドを使用しないでそれを使用することのみが推奨されていません。 '>'は有効なCSSセレクタなので、非推奨にすることはできません。しかし、1つのオペランドだけで使用するには有効なCSSではないので、その特定の動作を非難することは意味があります。 –

+0

@amではない - あなたは正しい。 $( "> elem"、context)は非推奨です。 – santa

答えて

1

外部テーブルのtdに制限するには、複数の子セレクタを使用して特定のレベルまでドリルダウンすることができます。

$("table:first > tbody > tr > td:first-child").not("[colspan]") 

私にはtbodyが含まれています。ほとんどのブラウザ(必ずしもすべてではありません)が欠落している場合には、それを挿入するので、明示的にテーブルに含める必要があります。


あなたが含まれるべきtheadtfoot要素を持っている場合は、代わりにtbody*を使用しています。

$("table:first > * > tr > td:first-child").not("[colspan]") 
+0

ありがとう。それは非難されているので、私は親>子セレクタなしで解決策を見つけることを望んでいた... – santa

+2

@santa:いいえ、 'parent> child'セレクターは非難されません。左辺オペランドなしでの使用は、 '> child、context'や' $(context).find( '> child') 'のように廃止されました。 –

1

動作しません。 TDはおそらくとにかくTABLEの直系の子孫ではありませんので、ちょうどtehのセレクタに>を削除し、(間にTRがあるはずです):また

$('table:first td:first-child:not([colspan])'); 

、私はそれが廃止されてちょうど> childセレクタ(だと思いますセレクタに親を持たない場合)。 parent > childは完全に有効でなければなりません:

注:$( "> elemは"、文脈)セレクタは、将来 リリースで廃止されます。したがって、代わりの セレクタを使用する代わりに、その使用法は推奨されません。

+0

+1私にそれを打つ。 –

+1

私はこのソリューションのシンプルさが大好きです!しかし、まだネストされたテーブルの最初の列を選択します... – santa

+0

@サンタ右、私はあなたの質問を誤解しました。ドリルダウンしなければならないかもしれないと思いますが、私は簡単な解決策を考え出すことができます。 – David

0
/* This piece of code selects every first TD element without colspan 
* in EVERY NOT nested TABLE 
*/ 

// Select all without colspan 
$('table td:first-child:not([colspan])').filter(
    // filter out those having more than 1 parent table 
    function() { 
     return $(this).parents('table').length == 1 
    }).css('background', 'red'); 
関連する問題