【发布时间】:2011-06-26 20:50:45
【问题描述】:
我需要通过 jQuery 选择器找到页面中没有类的所有 span。
例子:
<span class='Cool'>do not found me</span>
<span>me, me, take me please!!!</span>
【问题讨论】:
标签: jquery html jquery-selectors
我需要通过 jQuery 选择器找到页面中没有类的所有 span。
例子:
<span class='Cool'>do not found me</span>
<span>me, me, take me please!!!</span>
【问题讨论】:
标签: jquery html jquery-selectors
使用:not() 和attribute not selector [att!=val] 过滤掉具有非空class 属性的元素:
$('span:not([class!=""])')
但是请注意,[att!=val] 是一个非标准的 jQuery 选择器,这意味着该选择器不能用于 CSS 或 document.querySelectorAll()。如果你和我一样,并且你是一个遵循标准的坚持者,因此希望尽可能避免使用非标准的 jQuery 选择器,那么以下是直接等效的:
$('span:not([class]), span[class=""]')
这匹配
span 元素具有 no class 属性,并且class属性的span元素,但仅当属性值为空时。不过,在大多数情况下,您应该可以只使用第一部分:
$('span:not([class])')
您通常只会在负责输出它的应用程序或不注意的开发人员生成的标记中找到空的class 属性。
【讨论】:
[!=""] 从 jQuery 的第一个版本就已经存在。
:not([class]) 有效,那很好:)
[!=] 属性选择器;你会改用span:not([class]), span[class=""]。不过,在大多数情况下,您应该能够摆脱span:not([class])。您通常只会在脚本或不注意的人生成的标记中找到空的class 属性:)
请参阅此答案以仅使用 css Can I write a CSS selector selecting elements NOT having a certain class?
:not([class])
实际上,这将选择没有应用 .class 的任何东西。
我收集了一个jsfiddle 演示
html
<h2 class="fake-class">fake-class will be green</h2>
<h2 class="">empty class SHOULD be white</h2>
<h2>no class should be red</h2>
<h2 class="fake-clas2s">fake-class2 SHOULD be white</h2>
<h2 class="">empty class2 SHOULD be white</h2>
<h2>no class2 SHOULD be red</h2>
css
h2 {color:#fff}
:not([class]) {color:red;background-color:blue}
.fake-class {color:green}
【讨论】: