【问题标题】:selecting <label> but excluding <label> that contain <input>选择 <label> 但不包括包含 <input> 的 <label>
【发布时间】:2012-07-02 01:31:03
【问题描述】:

我有 2 种类型的标签,像第一行这样的普通标签,以及其中包含输入字段的标签。什么 CSS 规则可以让我选择所有 &lt;label&gt;,但排除所有恰好包含 &lt;input&gt; 的标签?

<label for="type">Some Label</label>

<label for="type">
   <input type="checkbox" value="1" id="type">Some Label
</label>

【问题讨论】:

    标签: css


    【解决方案1】:

    “相邻兄弟”选择器应该可以工作,如果您正在寻找标签+输入对:

    label+input
    {
        /* rules */
    }
    

    这将忽略您的标签嵌套输入,除非在其中包含输入的标签之后碰巧有输入。

    查看 Sitepoint 的 CSS 参考:http://reference.sitepoint.com/css/adjacentsiblingselector

    【讨论】:

    • @sameold 这个问题在于它不兼容 IE6 和 7。如果这对您来说不是问题,您可以为所有标签定义样式并覆盖下一个(紧跟在或紧接之前,而不是换行)输入。
    • @rcdmk 啊,真的。我养成了忘记这两个的坏习惯……很好。
    【解决方案2】:

    做到这一点的最佳方法是为它们添加不同的类,或者至少为其中一个添加不同的类。

    CSS 没有父选择器,因此您无法使用一些 javascript 检查包含其他元素的元素。

    一些背景:
    CSS selector for "foo that contains bar"?
    Is there a CSS parent selector?
    CSS Parent/Ancestor Selector
    Complex CSS selector for parent of active child

    【讨论】:

    • 是的。正如我所说,您不必创建第二个类。您可以创建 1 个类并将其应用于标签而无需输入。
    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多