jQuery选择没有类或ID的元素

时间:2014-05-28 15:13:26

标签: 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 ?

哪一个是正确的,我的猜测是noSpace - 但我不知道。有人试过这个吗?

我的猜测是,对于空格,选择器进入没有ID的标签内部,并选择没有与之关联的类的子元素。

noSpace结果是正确的结果,因为它只选择既没有类也没有id的元素。

有人可以验证吗?谢谢!


答案

使用此选择器查找既没有类,也没有与之关联的id的元素。

$('*:not([id]):not([class])');

奖金:$('body *:not([id]):not([class])'); - 如果您只想处理实际内容

3 个答案:

答案 0 :(得分:4)

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

您可以将noSpace更改为此而仍然可以获得正确的结果:

var noSpace= $('*:not([id]):not([class])'); // second * not needed

JSFiddle used for testing

答案 1 :(得分:3)

$("*").not("[class],[id]") 

您可以通过逗号分隔符

继续添加属性或类或标记

附加说明http://api.jquery.com/not-selector/

.not()方法最终会为您提供比将复杂选择器或变量推送到:not()选择器过滤器更可读的选择。在大多数情况下,这是一个更好的选择

(:not)更快,因为它是css3选择器浏览器,但在较旧的浏览器ie8或不支持css3的浏览器中显示真正的慢查询

http://jsperf.com/jquery-css3-not-vs-not测试结果

答案 2 :(得分:1)

$('*:not([id]):not([class])')

您的withSpace会选择没有课程且父母没有身份证明的元素。关于noSpace不确定。 更新哦,实际上它和我的一样。所以,答案是你的最后一个选择器。