jQuery: pilih semua elemen dari kelas yang diberikan, kecuali untuk Id tertentu


146

Ini mungkin cukup sederhana.

Saya ingin memilih semua elemen dari kelas yang diberikan thisClass, kecuali di mana id berada thisId.

yaitu sesuatu yang setara dengan (di mana - / minus berarti hapus):

$(".thisClass"-"#thisId").doAction();

Jawaban:


290

Gunakan : bukan pemilih .

$(".thisclass:not(#thisid)").doAction();

Jika Anda memiliki beberapa id atau pemilih, gunakan pembatas koma, sebagai tambahan:

(".thisclass:not(#thisid,#thatid)").doAction();


3
Bagaimana jika Anda ingin mengecualikan lebih dari satu kelas? THX
SoulMagnet

13
Dari dokumentasi: All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)jadi gunakan saja penyeleksi dibatasi koma untuk melakukan banyak(".thisclass:not(#thisid,#thatid)").doAction();
Chase

bekerja dengan tanda kutip tunggal seperti ini - $ (".classclass ini: tidak ('# thisid')"). doAction ();
Muhammad Raja

atau jika Anda ingin mengikat semua elemen yang memiliki nama kelas tertentu, kecuali satu, Anda dapat melakukan seperti ini: $ ('. thisclass: not (#id) .otherclass'). doAction ()
dalmate

bagaimana jika saya memiliki kode standar seperti: $ ('# some'). notimportant, $ ('# another'). dosomethingelse dan saya ingin menghindari eksekusi atas id tertentu yang diberikan secara dinamis?
Botea Florin


7

Anda dapat menggunakan fungsi .not seperti contoh berikut untuk menghapus item yang memiliki id yang tepat, id yang mengandung kata tertentu, id yang dimulai dengan kata, dll ... lihat http://www.w3schools.com/jquery/jquery/jquery_ref_selectors .megang informasi lebih lanjut tentang pemilih jQuery.

Abaikan oleh Exact ID:

 $(".thisClass").not('[id="thisId"]').doAction();

Abaikan ID yang berisi kata "Id"

$(".thisClass").not('[id*="Id"]').doAction();

Abaikan ID yang dimulai dengan "saya"

$(".thisClass").not('[id^="my"]').doAction();

6

Saya hanya akan memberikan jawaban JS (ES6), kalau-kalau ada orang yang mencarinya:

Array.from(document.querySelectorAll(".myClass:not(#myId)")).forEach((el,i) => {
    doSomething(el);
}

Pembaruan (ini mungkin terjadi ketika saya memposting jawaban asli, tetapi tetap menambahkan ini sekarang):

document.querySelectorAll(".myClass:not(#myId)").forEach((el,i) => {
    doSomething(el);
});

Ini menghilangkan Array.frompenggunaan.

document.querySelectorAllmengembalikan a NodeList.
Baca di sini untuk mengetahui lebih lanjut tentang cara mengulanginya (dan hal-hal lain): https://developer.mozilla.org/en-US/docs/Web/API/NodeList



2

Menggunakan .not()metode dengan memilih seluruh elemen juga merupakan opsi.

Cara ini bisa berguna jika Anda ingin melakukan tindakan lain dengan elemen itu secara langsung.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
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.