如果元素没有指定类,我该如何选择它?

时间:2011-05-09 19:02:22

标签: jquery css

我正在修改现有WordPress主题的CSS。主题有很多特殊的列表样式,附加到<li>元素。因此,应用于list-style:none元素的通用<li>规则。

我想更新CSS以重新添加没有附加类的list-style元素的<li>默认值(即那些没有应用特殊样式的元素)。这需要有选择性,以免破坏花哨的效果。

我知道:not()伪选择器,并且可能最终使用它来专门排除每个可能的类;然而,有十几个,这似乎是一个维护噩梦。

有没有办法,使用CSS或jQuery,通过指定它有 no 类设置来选择一个元素?

3 个答案:

答案 0 :(得分:8)

$('li:not([class])');应该做你需要的。

考虑到Dan的评论 - 因为您未指定我认为您的意思是li根本没有class属性。如果您需要抓取<li class><li class=""> ...

$('li:not([class])');
$('li[class=]');
$('li[class=""]');

答案 1 :(得分:2)

jQuery:$('li[class=]')(选择既没有类属性的元素,也选择属性存在的元素,但是为空)

遗憾的是,CSS选择器li[class=""]的工作方式不同。它仅选择属性所在的元素,但为空(例如:<li class></li><li class=""></li>

$('li:not([class])')解决方案可能不是您想要的(它不会选择具有class属性但仍为空的元素。)

假设:

<ul>
  <li>item 1</li>
  <li class>item 2</li>
  <li class="">item 3</li>
  <li class="some-class">item 4</li>
</ul>

$('li[class=]')选择1,2,3
$('li[class=""]')选择2,3
$('li:not([class])')仅选择1

答案 2 :(得分:0)

有趣的是,你可以这样做:

$('li[class=]')

$('li:not([class]=)')

ķ