sha*_*ban 4 javascript jquery jquery-selectors
尝试找到一个选择器来获取所有没有类且没有设置 id 的元素。
到目前为止,我有 2 个不同的输出,具体取决于选择器中是否有空格:
// outputs
var noID = $('*:not([id])');// 144 - may have a class
var noClass = $('*:not([class])'); // 100 - may have an id
var withSpace = $('*:not([id]) *:not([class])'); // 99 ?
var noSpace= $('*:not([id])*:not([class])'); // 84 ?
Run Code Online (Sandbox Code Playgroud)
哪一个是正确的,我的猜测是noSpace- 但我不知道。以前有人尝试过这个吗?
我的猜测是,通过空格,选择器将进入没有 ID 的标签,并选择没有与之关联的类的子元素。
结果noSpace是正确的,因为它只选择没有类和 id 的元素。
有人可以验证吗?谢谢!
使用此选择器可以查找既没有类也没有与其关联的 id 的元素。
$('*:not([id]):not([class])');
Run Code Online (Sandbox Code Playgroud)
奖励:$('body *:not([id]):not([class])');- 如果您只想处理实际内容
withSpace -$('*:not([id]) *:not([class])');将查找没有 ID 的元素内没有类的所有元素。在选择器中放置一个空格就像单独调用 find 一样。
您可以将 noSpace 更改为这样,仍然可以获得正确的结果:
var noSpace= $('*:not([id]):not([class])'); // second * not needed
Run Code Online (Sandbox Code Playgroud)
$("*").not("[class],[id]")
Run Code Online (Sandbox Code Playgroud)
您可以通过逗号分隔符继续添加属性或类或标签
附加说明http://api.jquery.com/not-selector/
与将复杂的选择器或变量推入 :not() 选择器过滤器相比,.not() 方法最终将为您提供更具可读性的选择。大多数情况下,这是更好的选择
(:not) 更快,因为它是 css3 选择器浏览器,但在较旧的浏览器 ie8 或不支持 css3 的浏览器中显示真正缓慢的查询
http://jsperf.com/jquery-css3-not-vs-not测试结果