0

我有以下 html 片段:

...
<div>
    <a></a>
    <select class="error"></select>
    <label class="error"></label>
    <div></div>
</div>
...

我需要用 CSS 选择“a”标签。这可能吗?

我正在尝试选择“a”标签。错误类是通过 javascript 动态注入的。我想要一个使“a”标签变红的静态 css 规则。

我只对使用选择器的 CSS 方法感兴趣。如果这是不可能的,我不需要其他方法的帮助。

~~~~~~~~~~~~~~ 编辑:~~~~~~~~~~~~~~~

唯一将这个“a”标签与其他“a”标签区分开来的是它后面的错误类元素的存在。错误类是动态应用的。我不想选择其他没有错误类的“a”标签。我只想在它后面跟着错误类时选择这个“a”标签。

~~~~~~~~~ 再次编辑:~~~~~~~~~

我解释得很糟糕。我希望我可以选择包含错误类的所有 div 的第一个孩子(或其他东西)。

4

4 回答 4

3

这不可能。CSS 没有根据其后的兄弟元素来选择元素的工具。甚至CSS Selectors 4(包含许多提议的,但未批准或实施的选择器添加)也缺少这样的功能。(如果它会被添加,我想它会被称为“前兄弟组合器”。)

于 2012-09-09T05:21:19.420 回答
1

只需选择锚点即可在该特定布局中为您提供所需的内容。

a {color: red;}

- 编辑 -

既然你改变了你的问题,这里有一个新的答案:

使用 JS 检查是否存在特定类型的兄弟姐妹。

$('a').each(function(){
    if (​$(this).siblings('.error').length > 0​​)
        $(this).css('color','red');
});​
于 2012-09-09T01:04:23.603 回答
1
<style>
  .mylinkclass {
    ...style info goes here
  }
</style>

...
<div>
    <a class="mylinkclass"></a>
    <select class="error"></select>
    <label class="error"></label>
    <div></div>
</div>
...
于 2012-09-09T01:08:10.963 回答
1

关于您更新的问题,请尝试以下 hackish 解决方案:

div a:nth-last-child(4)
{
    background-color:yellow;
}

如果您可以指望DIV当错误元素存在时您的内部有 4 个且只有 4 个元素(锚是第一个),否则存在更少(或更多)元素。

无论如何,您最好为此使用 Javascript(或适当的 HTML)。

于 2012-09-09T02:02:02.543 回答