Bagaimana Memilih Elemen Yang Tidak Memiliki Kelas Tertentu


91

Saya bertanya-tanya bagaimana cara memilih elemen yang tidak memiliki kelas tertentu menggunakan JavaScript, bukan jQuery.

Misalnya, saya punya daftar ini:

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

dan saya memilih tugas yang diselesaikan dengan:

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

Tapi kemudian saya tidak yakin bagaimana memilih item daftar yang tidak memiliki kelas tersebut.

Jawaban:


166

Ini memilih LIelemen kedua .

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

atau

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

Contoh:

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

Untuk memilih <li>yang belum completedatau selectedkelas:

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

Biola

http://jsfiddle.net/Z8djF/


Bagaimana melakukan kebalikannya : yaitu, memilih semua elemen yang memiliki keduanya completeddan selectedkelas?
pengguna2284570

@ user2284570 tulis saja kedua kelas tanpa spasi: li.completed.selected-> ini akan cocok dengan semua lielemen yang memiliki kelas completedANDselected
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

Coba dapatkan array dari turunan orang tua sebagai gantinya:

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

Kemudian putar / cari jika perlu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.