2011-05-20 26 views
2

我努力的目標,並最終樣式的字符串,在這個examle BLA,在HTML頁面中有許多測試表。jquery包含|目標只有始祖

例如HTML頁面:

<table> 
<tr> 
<td><table><div><tr><td>BLA</td></tr></div></table></td> 
</tr> 

而jQuery腳本使用:

$("td:contains('BLA')"); 

做到這一點,但我看到,所有TD的選擇。我如何才能獲得首個TD,沒有所有的祖先?.. 如果這是可能的,我怎麼能添加一個類始祖往上走時,DOM樹? (和僅此一個)

謝謝社區

+1

也許$(「td」)。html()。contains('BLA')? – 2011-05-20 15:26:39

+0

@Eric,對於'​​' – nickf 2011-05-20 15:46:10

回答

2

你描述的是最後一個TD,而不是第一個因爲它們在DOM層次順序返回。

$('td:contains("BLA"):not("td td")').addClass('whatever'); 

演示在http://jsfiddle.net/92Xj2/


更新澄清評論

$('td:not(:has(td)):contains("BLA")').addClass('whatever'); 

新的演示後http://jsfiddle.net/gaby/92Xj2/4/

+0

都是如此。謝謝Gaby,不幸的是,在現實世界的例子中,沒有簡單的方法來知道我們將擁有多少個嵌套的​​。 另外,我試着修改這樣的例子: http://jsfiddle.net/92Xj2/2/ 它似乎並沒有做我們想要的東西..是不是有一種直接的方法來只針對第一個「BLA」的容器沒有走上否定的道路? – 2011-05-22 08:17:49

+0

@George的':沒有(TD TD)'並不意味着兩層深。這意味着我們想要的'td'沒有嵌套在另一個'td'的任何深度。所以它將永遠是DOM中最頂級的'td'。 (* td t被稱爲** [後代](http://www.w3.org/TR/CSS2/selector.html#descendant-selector)**選擇器*) – 2011-05-22 21:58:42

+0

哦,我明白了。我沒有解釋清楚,我認爲,我想選擇在最頂端的dom最低的TD .. – 2011-05-23 08:23:27