Cách chọn phần tử không có phân loại cụ thể


91

Tôi đang tự hỏi làm cách nào để chọn một phần tử không có một lớp cụ thể bằng JavaScript, không phải jQuery.

Ví dụ, tôi có danh sách này:

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

và tôi chọn nhiệm vụ đã hoàn thành bằng cách:

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

Nhưng sau đó tôi không chắc chắn làm thế nào để chọn mục danh sách không có các lớp đó.

Câu trả lời:


166

Điều này chọn LIphần tử thứ hai .

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

hoặc là

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

Thí dụ:

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

Để chọn <li>không có completedcũng như selectedlớp:

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

Vĩ cầm

http://jsfiddle.net/Z8djF/


Cách làm ngược lại : tức là chọn tất cả các phần tử có cả completedselectedclass?
dùng2284570

@ user2284570 chỉ cần viết cả hai lớp mà không cần khoảng trắng: li.completed.selected-> điều này sẽ phù hợp với tất cả những liyếu tố đó có completedselectedlớp
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

Thay vào đó, hãy thử lấy một mảng con của cha mẹ:

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

Sau đó lặp / tìm kiếm chúng khi cần thiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.