jQuery 选择没有类或 ID 的元素

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])');- 如果您只想处理实际内容

Ric*_*ton 6

withSpace -$('*:not([id]) *:not([class])');将查找没有 ID 的元素内没有类的所有元素。在选择器中放置一个空格就像单独调用 find 一样。

您可以将 noSpace 更改为这样,仍然可以获得正确的结果:

var noSpace= $('*:not([id]):not([class])'); // second * not needed
Run Code Online (Sandbox Code Playgroud)

JSFiddle 用于测试


nik*_*iko 5

$("*").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测试结果