CSS选择器 - 选择特定的子元素

时间:2011-03-03 20:25:53

标签: css css3 css-selectors

这是我的代码段:

<div class="totals">
        <table id="shopping-cart-totals-table">
    <col />
    <col width="1" />
    <tfoot>
        <tr>
    <td style="" class="a-right" colspan="1">

        <strong>Grand Total</strong>
    </td>
    <td style="" class="a-right">
        <strong><span class="price">$364.99</span></strong>
    </td>
</tr>
    </tfoot>
    <tbody>

        <tr>
    <td style="" class="a-right" colspan="1">
        Subtotal    </td>
    <td style="" class="a-right">
        <span class="price">$354.99</span>    </td>
</tr>
<tr>
    <td style="" class="a-right" colspan="1">

        Shipping & Handling (Flat Rate - Fixed)    </td>
    <td style="" class="a-right">
        <span class="price">$10.00</span>    </td>
</tr>
    </tbody>
</table>

有没有办法选择显示“$ 10.00”的范围?也许选择元素的第二次出现? I.E。:第二次“.totals table tbody tr td [colspan ='']”出现了吗?

2 个答案:

答案 0 :(得分:8)

使用CSS3的:nth-child(),很容易实现“特定”标准:

#shopping-cart-totals-table > tbody > tr:nth-child(2) > td:nth-child(2) .price

或者,一种更有利于浏览器兼容性的替代方案(不使用CSS3选择器,假设恰好有两个tr和两个td s):

#shopping-cart-totals-table > tbody > tr + tr > td + td .price

答案 1 :(得分:1)

如果您能够更改购物车的输出,则可以在<tr>标记中添加一个类,例如<tr class="row01"><tr class="row02">

如果你不能改变你的后端,那么它就是前端技术的选择。最跨浏览器的方法是使用jQuery来应用行类。任何当前的IE都不支持另一种替代方案CSS3;鉴于这是一个购物车,您可能对最广泛的浏览器支持感兴趣。

类似的东西:

$('#shopping-cart-totals-table tr').each(function(n){
    $(this).addClass('row'+n);
});

或者,如果您只对第三项感兴趣,请以与CSS3相同的方式使用jQuery:

$('#shopping-cart-totals-table tr:nth-child(2) .price').addClass('highlightClass');