2013-04-16 81 views
0

设置我有一个表:从选择一个元素只能通过CSS选择

<table> 
<thead> 
    <tr> 
     <td>col 1</td> 
     <td>col 2</td> 
     <td>col 3</td> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td>row 1</td> 
     <td class="editable">value 1</td> 
     <td class="editable">value 2</td> 
    </tr> 
    <tr> 
     <td>row 2</td> 
     <td class="editable">value 1</td> 
     <td class="editable">value 2</td> 
    </tr> 
    <tr> 
     <td>row 3</td> 
     <td class="editable">value 1</td> 
     <td class="editable">value 2</td> 
    </tr> 
    <tr> 
     <td>row 4</td> 
     <td class="editable">value 1</td> 
     <td class="editable">value 2</td> 
    </tr> 
    <tr> 
     <td>row 5</td> 
     <td class="editable">value 1</td> 
     <td class="editable">value 2</td> 
    </tr> 
</tbody> 
</table> 

如何选择(仅使用CSS选择器)从td.editable只有一个元素?模拟jQuery :first选择器将被接受。

+0

只有第一个元素。 querySelector(“td.editable:first”) – Jettary

+0

'querySelector('td.editable')'会返回第一个元素,但这是因为querySelector()总是限制对第一个匹配的选择。如果使用'querySelectorAll('td.editable')',它将返回所有这些,除非您专门使用该方法,否则这不是您想要的。 – BoltClock

回答

1

你可以使用的第n个孩子选择。使用一个来获得所需的确切表格行,然后使用第二个第n个孩子来获得所需的确切<td>元素。 例如,如果我想在第二排,并与一类=第二<td>元素“编辑”我可以这样做:

tr:nth-child(2) > td.editable:nth-child(2) 
+0

谢谢,这有助于。 – Jettary

0

在兼容的浏览器,你可以使用the :nth-child pseudo-class

+0

cssSelector(“td.editable:nth-​​child(1)”)将返回第一组“可编辑”的td元素。 – Jettary

0

这是你唯一的td.editable的表?尝试这样的事情......

td.editable:nth-child(2) //or 3 or 4, etc... 
0

不知道这是你想要的,但试试这个:

table > tbody > tr > td:nth-child(2) { 
    color: red; 
} 

Demo