Как выбрать элемент, не имеющий определенного класса


91

Мне интересно, как выбрать элемент, у которого нет определенного класса, с помощью JavaScript, а не jQuery.

Например, у меня есть такой список:

<ul id="tasks">
  <li class="completed selected">One Task</li>
  <li>Two Task</li>
</ul>

и я выбираю выполненную задачу по:

var completeTask = document.querySelector("li.completed.selected");

Но тогда я не уверен, как выбрать элемент списка, у которого нет этих классов.

Ответы:


166

Это выбирает второй LIэлемент.

document.querySelector("li:not([class])")

или

document.querySelector("li:not(.completed):not(.selected)")

Пример:

// select li which doesn't have a 'class' attribute...
console.log(document.querySelector("li:not([class])"))

// select li which doesn't have a '.completed' and a '.selected' class...
console.log(document.querySelector("li:not(.completed):not(.selected)"))
 <ul id="tasks">
    <li class="completed selected">One Task</li>
    <li>Two Task</li>
  </ul>


17

Чтобы выбрать <li>не имеющий completedни selectedкласса:

document.querySelector("li:not(.completed):not(.selected)");

Скрипка

http://jsfiddle.net/Z8djF/


Как сделать обратное : то есть, выбрать все элементы , которые имеют как completedи selectedкласс?
user2284570 02

@ user2284570 просто напишите оба класса без пробелов: li.completed.selected-> это будет соответствовать всем тем liэлементам, у которых есть класс completedANDselected
BeNdErR 03



1

Попробуйте вместо этого получить массив дочерних элементов родителя:

var completeTask = document.querySelector("#tasks").childNodes;

Затем перебирайте / ищите их по мере необходимости.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.