2012-08-12 144 views
1

我有2個表格。jQuery選擇器的問題?

<table border="1" class="a"> 
      <tr> 
       <td>Value 1</td> 
       <td>2</td> 
      </tr> 
      <tr> 
       <td>Value 2</td> 
       <td></td> 
      </tr> 
     </table> 




     <table border="1" class="b"> 
      <tr> 
       <td>Value 1</td> 
       <td>2</td> 
      </tr> 
      <tr> 
       <td>Value 2</td> 
       <td></td> 
      </tr> 
     </table> 

表#1我寫的:

$(".a td:parent").fadeTo(1500, 0.3); 

,其結果是:

enter image description here

通知綠色其中一個淡出。

但它並沒有使感覺。我寫的「去 - 這是TR和淡化一切」

沒關係,以後的答案是,因爲它不具有內,而其他3 td's有一個值。

所以我測試(在表):

$(".b tr").fadeTo(1500, 0.3); 

,並沒有褪色所有 TR的(雖然最後一個單元格是空的)....

enter image description here

這是怎麼回事?

jsbin:http://jsbin.com/ehacen/1/edit

+0

':parent'做別的東西:http://api.jquery.com/parent-selector /「選擇所有作爲另一個元素的父元素的元素,包括文本節點。」「這是與......相反的:空。「 – biziclop 2012-08-12 10:18:43

回答

3

問題是與第一個例子。根據API(http://api.jquery.com/parent-selector/),:parent選擇其中包含內容的內容。所以第一個選擇器是說「得到所有內容都是<td>」,所以它只選擇前三個<td> s。要選擇<td> S的所有的家長,使用此:

$('.a td').parent() 

希望這會清除它爲您服務!

+3

我覺得你應該使用'parent()',因爲你只想選擇直接的父親''s – biziclop 2012-08-12 10:20:58

+1

是的,謝謝你抓住那個錯字! – Abraham 2012-08-12 10:26:22

2

選擇器:parent將查看td與一個孩子(在這個例子中,你所有的三個td有一個textNode作爲一個孩子,而不是最後一個:parent沒有上漲的dom樹,你將需要使用:

$(".a td").parent().fadeTo(1500, 0.3); 

,或者如果你想使用:父:

$(".a tr:parent").fadeTo(1500, 0.3); 

我認爲你需要等到CSS4帶有他們的父母選擇http://www.w3.org/TR/2011/WD-selectors4-20110929/