我需要使用jQuery来查找所有没有属性的DIV标记,并为每个标记应用一个类。这是一个示例HTML:
<div id="sidebar">
<div>Some text goes here</div>
<div class="something">something goes here</div>
<div>Another div with no attributes.</div>
</div>
所以,我需要把它变成这个:
<div id="sidebar">
<div class="myClass">Some text goes here</div>
<div class="something">something goes here</div>
<div class="myClass">Another div with no attributes.</div>
</div>
如何通过jQuery找到没有属性的div
类型的元素?感谢。
答案 0 :(得分:16)
你走了:
$('div', '#sidebar').filter(function () {
return this.attributes.length === 0;
})
现场演示: http://jsfiddle.net/phbU9/
attributes
属性返回元素上设置的所有属性的列表。 “Naked”元素有一个空的attributes
列表。
更新:请务必阅读下面的Tim's answer,它为旧版本的IE提供解决方案,因为我自己的解决方案在IE8及以下版本中无效。
答案 1 :(得分:2)
attributes
集合具有每个可能属性的条目,而不仅仅是HTML中指定的属性。您可以通过检查每个属性对象的specified
属性来解决此问题。
现场演示:http://jsfiddle.net/timdown/6MqmK/1/
代码:
$("div").filter(function() {
var attrs = this.attributes, attrCount = attrs.length;
if (attrCount == 0) {
return true;
} else {
for (var i = 0; i < attrCount; ++i) {
if (attrs[i].specified) {
return false;
}
}
return true;
}
});
答案 2 :(得分:0)
答案 3 :(得分:0)
你需要提供某种选择器,在这种情况下我已经使用了你的侧栏,但它可以是任何东西。然后获取没有class属性的子项并添加一个新类。有关示例,请参阅JSFiddle:
http://jsfiddle.net/HenryGarle/q3x5W/
$("#sidebar").children('div:not([class])').addClass('newClass');
因此,这将返回没有类标记的2个元素,并使侧栏和div完全不受影响。
答案 4 :(得分:0)
您可以结合使用jQuery的has attribute selector和not selector。例如:
$('div:not([class], [id])').addClass('myClass');
使用这种方法,您需要明确指定要检查其存在的属性。 Sime的解决方案将该类应用于根本没有任何属性的div。
答案 5 :(得分:0)
为了阐述Tim Down的答案,我建议检查attrs var not null html具有注释标签的特殊情况等。
答案 6 :(得分:-1)
尝试$('div:not([class])')。addClass('myClass'); 这是一种通用方法,因为该类将适用于所有没有类
的div答案 7 :(得分:-6)
$('#sidebar div')` or more general `$('div'); //returns collections of divs
回答这个问题:
$('#sidebar div').addClass('myClass');