2012-01-04 90 views
1

,我需要選擇其中滿足以下條件的每個錶行的第一個TD:第一個表的每一行W的/選擇第一個TD的jQuery

  1. TD沒有合併單元格
  2. TD在第一個表,而不是任何嵌套的人

下,我不工作的...

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

你能張貼在[的jsfiddle]爲例(http://jsfiddle.net/)? – 2012-01-04 17:50:33

+0

*「同樣父母>子選擇器被取消......」*不,它不是。只有在不使用左側操作數的情況下才會使用它。 '>'是一個有效的CSS選擇器,所以不推薦使用它。但是,只有一個操作數才能使用它,這不是有效的CSS,所以不贊成使用這種特定的行爲。 – 2012-01-04 18:25:52

+0

@am不是我 - 你說得對。它是$(「> elem」,上下文)已被棄用。 – santa 2012-01-04 18:27:46

回答

1

要限制爲外表的td,可以使用多個子選擇器深入到特定級別。

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

請注意,我包括tbody。你應該明確地將它包含在你的表中,因爲大多數瀏覽器(但不一定全部)會在缺失時注入它。


如果您有應包括theadtfoot元素,使用*代替tbody

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

謝謝。我希望找出一個解決方案,沒有父>子選擇器,因爲它已被棄用... – santa 2012-01-04 18:12:51

+2

@santa:不,不推薦使用'parent> child'選擇器。不使用左手操作數的情況下不推薦使用,如:'> child,context'或$(context).find('> child')'。 – 2012-01-04 18:18:00

1

TD可能不是TABLE反正的直系後裔(應該有之間的TR),所以只是刪除>在格蘭選擇:

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

而且,我認爲它只是> child選擇使用已過時(當在選擇器中沒有父母時)。 parent > child應該是完全有效的:

注:$( 「> ELEM」,上下文)選擇將在未來 版本中將會棄用。因此不鼓勵使用它的替代 選擇器。

+0

+1擊敗了我。 – 2012-01-04 17:51:41

+1

我喜歡這種解決方案的簡單性!但它仍然選擇嵌套表的第一列... – santa 2012-01-04 17:51:53

+0

@santa對,我誤解了你的問題。我想你可能需要深入研究,我會看看我能否想出一個簡單的解決方案。 – David 2012-01-04 18:08:42

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'); 
相關問題