【问题标题】:Simple mind-blowing thing; CSS selectors vs jQuery selectors简单的令人兴奋的事情; CSS 选择器与 jQuery 选择器
【发布时间】:2014-07-24 00:40:16
【问题描述】:

CSS 选择器 :not() 不起作用,而 jQuery :not 起作用。 考虑这个结构:

<div class="main">
<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
</ul>
<div>
    <div class="doc-view">
        <ul>
            <li>One</li>
            <li>Two</li>
            <li>Three</li>
        </ul>
    </div>
</div>

还有这个简单的 CSS:

li:not(.doc-view li) {
    color:green;
}

这里还有一点 jQuery:

$('li:not(.doc-view li)').css('color','red');

如您所见,选择器是相同的。但是如果你玩 jsFiddle,你会发现,那是不一样的。 jQuery 选择器以元素为目标,而 CSS 不是。

http://jsfiddle.net/LL429/3/

编辑:

问题是:

如何定位页面上的所有

  • ,除了.doc-view 容器中的那些?
  • 【问题讨论】:

    • 感谢您提出一个体面的问题。
    • 问题是什么?
    • @Quentin,已更新。现在可以回答了吗?

    标签: javascript jquery html css pseudo-class


    【解决方案1】:

    这是因为它们的含义不同。让我们从 CSS 开始。

    li:not(.doc-view li) 
    

    这意味着选择所有列表项,但不选择那些具有类 doc-view 和列表项后代的后代的列表项。您的代码没有这些,而且只允许simple selectors:not() 一起使用,因此选择器无论如何都是无效的。

    现在是 jQuery。

    $('li:not(.doc-view li)')
    

    这表示选择所有列表项,但不要在该集合中包含任何具有列表项后代的类 doc-view 的元素。这是可行的,因为它首先选择所有列表项,然后删除适合 :not(.doc-view li) 选择器的匹配元素组。

    【讨论】:

    • CSS 不是这个意思。 CSS 无效。您只能在:not() 中使用简单的选择器。 w3.org/TR/selectors/#negation
    • @Quentin - 是的,虽然这里有一个简单的选择器,但他仍在比较苹果和橙子。
    • @j08691 很好的答案,谢谢!你知道,如何用纯 CSS 回答我的问题吗?
    • 一个简单的解决方案是使用一种样式定位所有 lis,然后使用单独的样式定位 doc-view div 中的那些。您将无法使用纯 CSS 中的单个规则以不同的方式定位它们。
    • @j08691 想象一下,我无法访问 .doc-view html 和 css。如果是这样,我应该使用 jQuery 来定位 .doc-view 之外的
    • 吗?
    【解决方案2】:

    CSS 选择器!= jQuery 选择器。

    jQuery uses Sizzle CSS selector engine.

    试试:

    ul > li {
        color:green;
    }
    

    DEMO

    【讨论】:

    • 或者只是.main &gt;ul &gt; li ?
    • .doc-viewdiv 上,而不是li 上,所以它永远是真的。
    • 我想我对 CSS 选择器有所了解。目标不是针对特定的 li 元素,目标是展示不同的相等选择器在 jQuery 和 CSS 中是如何工作的。但是谢谢你的回答。
    【解决方案3】:

    由于.doc-viewdiv 上,您需要对div 使用否定,然后访问li

    所以纯CSS解决方案是:

    ul > li {
       color: red;
    }
    
    div:not(.doc-view) > ul > li {
       color:green;
    }
    

    See working jsFiddle demo

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签