Come selezionare un elemento che non ha una classe specifica


94

Mi chiedo come selezionare un elemento che non ha una classe specifica utilizzando JavaScript, non jQuery.

Ad esempio, ho questo elenco:

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

e seleziono l'attività completata da:

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

Ma poi non sono sicuro di come selezionare l'elemento dell'elenco che non ha quelle classi.

Risposte:


171

Questo seleziona il secondo LIelemento.

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

o

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

Esempio:

// 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

Per selezionare <li>ciò che non ha completedselectedclasse:

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

Violino

http://jsfiddle.net/Z8djF/


Come fare il contrario : cioè selezionare tutti gli elementi che hanno sia completede selectedclass?
user2284570

@ user2284570 scrivi solo entrambe le classi senza spazi: li.completed.selected-> questo corrisponderà a tutti quegli lielementi che hanno completedAND selectedclass
BeNdErR


2
document.querySelectorAll('[wf-body=details] input:not(.switch):not(.btn)').forEach(function(e){
    // do whatever you want. with 'e' as element :P
});

1

Prova invece a ottenere un array dei figli del genitore:

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

Quindi loop / cerca in base alle necessità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.