2012-08-12 108 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/