JQuery'de sınıf seçici değil


271

Belirli bir sınıfa sahip öğeleri seçmemek için basit bir seçici ifade var mı?

<div class="first-foo" />
<div class="first-moo" />
<div class="first-koo" />
<div class="first-bar second-foo" />

Sadece ilk üç div'i almak istiyorum ve denedim

$(div[class^="first-"][class!="first-bar"])

Ancak, son div ilk çubuktan daha fazlasını içerdiğinden, bu her şeyi alır. Böyle bir ifadede yer tutucu kullanmanın bir yolu var mı? Bunun gibi bir şey

$(div[class^="first-"][class!="first-bar*"]) // doesn't seem to work

Yardımcı olabilecek başka seçiciler var mı?


Daha önceki yorumumu çiz, sadece soruyu tekrar okudum. Kritik sınıftır first-bar.
BoltClock

Birinin class1 veya class2 içermeyen tüm öğeleri seçmek istemesi durumunda, birleştirme işe yarayacaktır:$('div[class^="first-"]').not('.class1').not('.class2')
J0ANMM

Yanıtlar:


544

Seçiciye ihtiyacınız var :not():

$('div[class^="first-"]:not(.first-bar)')

veya alternatif olarak .not()yöntem:

$('div[class^="first-"]').not('.first-bar');

91
: Not () öğesinin .not () ( jsperf.com/jquery-css3-not-vs-not ) değerinden 2-3 kata kadar daha hızlı olduğundan ,: (() öğesini kullanmak isteyebileceğinizi unutmayın. Ancak, jQuery dokümanları daha okunabilir olduğu için .not () kullanılmasını önerir ( api.jquery.com/not-selector ). Umarım bu ikisi arasında bir karar verir yardımcı olur!
rinogo

2
@rinogo Tarayıcıların büyük çoğunluğunun querySelectorAll'ı desteklemesi artık daha hızlı, ancak durum her zaman böyle olmadı.
lonesomeday

4
Evet, kesinlikle! :) Umarım yorumum eleştiri olarak gelmez; Zaten yararlı olan sorunuza eklemeyi tercih ettim.
rinogo

1
Teşekkürler!! Filtreleme Kutularım dışındaki tüm anahtarlarda enter tuşunu devre dışı bırak. $ ("input: not (.rgFilterBox)"). keydown (işlev (e) {if (e.keyCode == 13) {return false;} return true;});
hardba11

3
@Daniel, evet, ama eğer öyleyse , anında performans artışı elde etmek için süper kolay bir değişiklik :)
rinogo

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.