如何在页面上仅搜索具有特定类名的div

waa*_*990 3 javascript jquery

假设我想通过具有某个类名的div搜索.如果div没有某个id,我想为它们添加一个类.恩.

<div id ="1" class="head"></div>
<div id ="2" class="head"></div>
<div id ="3" class="head"></div>

  if(div.id != "1")
 {
  add class to all divs not = 1
 }
Run Code Online (Sandbox Code Playgroud)

这项工作将如何谢谢你

ale*_*lex 9

jQuery的

您可以使用此代码执行此操作...

$('div.head:not(#1)').addClass('some-class');
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

为了获得更好的性能,请使

$('div.head').not('#1').addClass('some-class');
Run Code Online (Sandbox Code Playgroud)

jsFiddle.


没有jQuery

对于现代浏览器......

[].slice.call(document.querySelectorAll('div.head')).filter(function(element) {
    return element.id != 1;
}).forEach(function(element) {
    element.classList.add('some-class');
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

你可以放弃filter()并使用:not(),就像Zeta的回答一样.

对于我们可爱的旧IE来说......

var divs = document.getElementsByTagName('div'),
    divsLength = divs.length;

for (var i = 0; i < divsLength; i++) {
    if (divs[i].id != '1' && ~divs[i].className.search(/\bhead\b/)) {
        divs[i].className += ' some-class';    
    }
}
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

根据您需要支持的程度,您可以随时使用document.getElementsByClassName(),只要您知道div如果其他元素可能包含相同的类名且您必须具有div专有权,则需要过滤元素.


此外,id根据规范,属性不能以数字开头.