在jQuery中选择没有样式的元素

时间:2014-01-14 12:18:16

标签: jquery

按类名选择元素很简单。但是,是否有可能在jQuery中选择任何没有类集的DOM元素?那种空风格选择器。

示例:

<div class="nope">
     <div>You need me!</div>
</div>
<span class="foo">Not me</span>

var answer = $("selector-im-looking-for").text(); // You need me!

4 个答案:

答案 0 :(得分:4)

我建议:

$('div').not('[class]');

JS Fiddle demo,请注意此方法无法选择<span>元素(下面的相关HTML)。

或者,选择没有class属性的所有元素:

$('body *:not("[class]")')

JS Fiddle demo,请注意此无法选择<span>元素。

如果在没有标记名的情况下使用伪类选择器,则隐含通用选择器(*),但在使用它的情况下,我更喜欢明确它,尽管它是可选的在这种情况下。

此外,要选择所有元素,在<body>内,使用无class属性,并使用class属性,但不能set class-name:

$('body *').filter(function(){
    return !this.className || !this.className.length;
})

JS Fiddle demo,这种方法,因为它测试缺少className属性以及空/零长度className属性,成功找到{{1} }。

上述演示全部使用以下HTML:

<span>

参考文献:

答案 1 :(得分:2)

您是否期待以下情况?

var answer = $("div").text(); // You need me!

或者

var answer = $(":not(.nope)").text(); // You need me!

编辑以下说明:

喜欢这个吗?

var answer = $('div:not([class])');

答案 2 :(得分:1)

答案 3 :(得分:1)

你可以使用过滤器,

$('div').filter(function(){
    return $(this).attr('class') === null;
}).each(function(){
    //iterate item
})