Saya dapat memilih (menggunakan jQuery) semua div dalam markup HTML sebagai berikut:
$('div')
Tetapi saya ingin mengecualikan div
(katakanlah memiliki id="myid"
) tertentu dari pilihan di atas.
Bagaimana saya bisa melakukan ini menggunakan fungsi Jquery?
javascript
jquery
jquery-selectors
siva636
sumber
sumber
Jawaban:
Sederhana:
$('div').not('#myid');
Menggunakan
.not()
akan menghapus elemen yang cocok dengan selektor yang diberikan padanya dari set yang dikembalikan oleh$('div')
.Anda juga dapat menggunakan
:not()
selektor:$('div:not(#myid)');
Kedua penyeleksi melakukan hal yang sama, namun
:not()
lebih cepat , mungkin karena mesin pemilih jQuery Sizzle dapat mengoptimalkannya menjadi.querySelectorAll()
panggilan asli .sumber
.not()
adalah jauh, jauh lebih baik dari:not()
.$('div:not(#myid)');
(tanpa tanda kutip). @Raynos: Mengapa?:not()
adalah pemilih CSS3. jQuery dapat langsung meneruskan pemilih kequerySelectorAll
jika didukung ....not
dan kurang dapat dibaca. Saya seharusnya mengatakan ": bukan selector di jQuery":not()
. Pemilih ini juga bukan baru untuk Selectors 4, juga tidak ada yang diubah untuk mengizinkan tanda kutip. Ini telah diubah untuk memungkinkan penyeleksi yang lebih kompleks. Kecuali jika saya salah memahami komentar Anda ...querySelectorAll
sebagai yang tercepat. Bukan patokan dunia nyata, tetapi diharapkan karena tidak ada overhead dari internal jQuery.:not()
sebenarnya lebih cepat, mungkin karena Sizzle tahu ia dapat mengoptimalkannya untuk digunakanquerySelectorAll()
var els = toArray(document.getElementsByTagName("div")); els.splice(els.indexOf(document.getElementById("someId"), 1);
Anda bisa melakukannya dengan cara kuno. Tidak perlu jQuery dengan sesuatu yang begitu sederhana.
Kiat pro:
Satu set elemen dom hanyalah sebuah larik, jadi gunakan
toArray
metode favorit Anda pada fileNodeList
.Menambahkan elemen ke satu set itu adil
set.push.apply(set, arrOfElements);
Menghapus elemen dari satu set adalah
set.splice(set.indexOf(el), 1)
Anda tidak dapat dengan mudah menghapus beberapa elemen sekaligus :(
sumber
.querySelector()
atau.querySelectorAll()
withdiv:not(#myid)
lebih cepat ... Benarkah?$("div:not(#myid)")
[dokter]
atau
$("div").not("#myid")
[dokter]
adalah cara utama untuk memilih semua kecuali satu id
Anda bisa melihat demo di sini
sumber
$("div:not(#myid)")
lebih cepat ... Periksa pengoptimalan sizzlejs untuk itu, saat menggunakan Javascript asli.querySelector()
atau.querySelectorAll()
.var elements = $('div').not('#myid');
Ini akan mencakup semua div kecuali yang dengan id 'myid'
sumber
$('div:not(#myid)');
inilah yang Anda butuhkan, saya pikir.
sumber
Itu harus melakukannya:
$('div:not("#myid")')
sumber
Anda menggunakan
.not
properti pustaka jQuery:$('div').not('#myDiv').css('background-color', '#000000');
Lihat aksinya di sini . Div #myDiv akan berwarna putih.
sumber