2

嗨,有一个这样的 DOM,需要选择所有 a 元素,除了那些是 div.hidden 部分的后代的元素。

<body>
<div>
    Some text <a href="mailto:alex@domain.com">Email Alex</a> Some more text
    <br/>
    <span>
        Some text <a href="mailto:frank@domain.com">Email Frank</a> Some more text
    </span>
    <hr/>
    <div class="hidden">
        Some text <a href="mailto:rachel@domain.com">Email Rachel</a> Some more text
        <div>
            Some text <a href="mailto:doris@domain.com">Email Doris</a> Some more text
            <p>
                Some text <a href="mailto:molly@domain.com">Email Molly</a> Some more text
            </p>
        </div>
    </div>
    <hr/>
    <div>
        Some text <a href="mailto:paul@domain.com">Email Paul</a> Some more text
    </div>
</div>
</body>

因此,水平线内的所有 a 元素都将被排除。我怎样才能做到这一点?不幸的是,使用 jQuery 不是一种选择。

谢谢亚历克斯

4

1 回答 1

3

一种方法是为所有<a>元素制定规则,然后用一个反转 div.hidden 中的规则的规则覆盖,即

a {
    prop: special-value;
}
div.hidden a {
    prop: not-special-value;
}
于 2013-09-06T19:26:08.723 回答