【问题标题】:CSS not selector is excluding all elements [duplicate]CSS不是选择器排除所有元素[重复]
【发布时间】:2013-06-04 13:20:15
【问题描述】:

我的表单有一个默认类,它定义了一些样式规则(scss 格式),如下所示:

form.simple_form {

  $indent: 200px;   
  $length: 350px;
  .... 
}

在某些情况下,我需要将其他样式规则集应用于我的表单,但我无法从中删除 simple_form 默认类(我的应用程序中的每个表单都是使用 simple_form 类创建的)。

幸运的是,我能够为每个表单设置额外的类,并使用 not css 选择器我不能像这样为每个表单应用默认表单类:

form.simple_form:not(.signup, .login) {

  $indent: 200px;
  $length: 350px;
  ....
}

这是完美的工作,但由于某种原因,simple_form 类不适用于所有表单,无论他们没有获得 signup 或 login 类。

那么,为什么 css 选择器无法获取带有 simple_form 类的表单呢?更重要的是,如果我在控制台中粘贴以下代码:

$('form.simple_form:not(.signup, .login)')

成功返回表单。

请注意,我使用的是 ruby​​ on rails 和 simple_form gem。

编辑:

这是我要选择的表单的 HTML:

<form accept-charset="UTF-8" action="/webinars" class="simple_form new_webinar" data-remote="true" data-type="js" data-validate="true" enctype="multipart/form-data" id="new_webinar" method="post" novalidate="novalidate">
....
</form>

这是我不想选择的 HTML:

<form accept-charset="UTF-8" action="/sessions" class="simple_form login" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="kmDnV10Pv3eQz09U9QKTjfLQ7zweu6teALh4DDjYmfk="></div>
...
</form>

【问题讨论】:

  • 请举例说明您希望 CSS 规则匹配的 HTML 以及您希望规则不匹配的 HTML。
  • @jfriend00 我已经编辑了问题并发布了我想要和不想选择的表格。
  • 我认为 $('form.simple_form:not(.signup, .simple_form)') 将返回所有表单,甚至是注册。我认为正确的语法是 $('form.simple_form:not(.signup):not(.simple_form)')
  • 你测试的是什么浏览器?
  • Chrome(版本 27.0.1453.110)使用 Ubuntu 13.04。我应该支持 CSS3 选择器。

标签: css css-selectors


【解决方案1】:

您遇到的问题似乎是在 :not() 选择器中使用逗号分隔的选择器列表,必须一次选择(“未选择”?)每个要删除的元素(当然在铬 25,Ubuntu 12.10)。

给定以下 HTML:

<p>No classes</p>
<p class="test">With class 'test'</p>
<p class="test1">With class 'test1'</p>

以下作品:

p {
    color: #f00;
}

p:not(.test):not(.test1) {
    color: #000;
}

JS Fiddle demo.

而以下(与您的方法类似)没有:

p {
    color: #f00;
}

p:not(.test, .test1) {
    color: #000;
}

JS Fiddle demo.

【讨论】:

  • 可以在我刚刚链接到的副本中找到解释 - 这是 jQuery 和 CSS 之间的差异。
  • @BoltClock 我的问题与您的参考文献没有任何共同之处。我需要一个有效的 CSS 选择器。我不是在问为什么 jQuery 会给我结果。
  • @BoltClock:这和 jQuery 有什么关系?
  • @Jawad:OP 使用的控制台代码有效,所以它必须是 jQuery。没有其他库像这样支持:not()。
  • @gotqn:问题有何不同?两者都在问为什么选择器在 CSS 中不起作用,但在 jQuery 中起作用,以及如何使用 CSS 来完成,答案都提供了相同的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2011-05-12
相关资源
最近更新 更多