jQuery: belirli bir kimlik dışında belirli bir sınıfın tüm öğelerini seçin


150

Bu muhtemelen oldukça basit.

thisClassKimliğin bulunduğu yer dışında, belirli bir sınıfın tüm öğelerini seçmek istiyorum thisId.

yani eşdeğer bir şey (burada - / eksi kaldırmayı gerektirir):

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

Yanıtlar:


297

Seçici değil kullanın .

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

Birden çok kimliğiniz veya seçiciniz varsa, ek olarak virgül ayırıcıyı kullanın:

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


3
Birden fazla sınıfı hariç tutmak isterseniz ne olur? THX
SoulMagnet

13
Belgelerden; All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)yani sadece birden yapmaya virgülle ayrılmış seçicileri kullanabilirsiniz(".thisclass:not(#thisid,#thatid)").doAction();
Chase

bunun gibi tek tırnak işaretleriyle çalıştı - $ (". thisclass: not ('# thisid')"). doAction ();
Muhammad Raja

veya biri dışında, belirli bir sınıf adına sahip öğelerin tüm alt öğelerine bağlanmak istiyorsanız, şunu yapabilirsiniz: $ ('. thisclass: not (#id) .otherclass']. doAction ()
dalmate

ya $ ('# birileri'), önemsiz, $ ('# başka') gibi standart bir koda sahipsem ve dinamik olarak verilen belirli bir kimlik üzerinde çalıştırmadan kaçınmak istersem?
Botea Florin


7

Tam kimliği, belirli bir kelimeyi içeren kimliği, bir kelimeyle başlayan kimliği, vb. Olan öğeleri kaldırmak için aşağıdaki örneklerde olduğu gibi .not işlevini kullanabilirsiniz ... bkz. Http://www.w3schools.com/jquery/jquery_ref_selectors jQuery seçiciler hakkında daha fazla bilgi için .asp .

Tam Kimliğe göre Yoksay:

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

"Kimlik" kelimesini içeren kimlikleri yoksay

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

"Benim" ile başlayan kimlikleri yoksay

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

6

Birisi ararsa diye bir JS (ES6) cevabı vereceğim:

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

Güncelleme (bu, orijinal cevabı yayınladığımda mümkün olabilirdi, ancak bunu şimdi ekledim):

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

Bu Array.fromkullanımdan kurtulur .

document.querySelectorAlldöndürür a NodeList.
Bunu (ve diğer şeyleri) nasıl yineleyeceğinizi öğrenmek için burayı okuyun: https://developer.mozilla.org/en-US/docs/Web/API/NodeList



2

Kullanılması .not()bütün bir eleman seçme yöntemi ile de bir seçenektir.

Bu öğeyle doğrudan başka bir işlem yapmak istiyorsanız, bu yöntem yararlı olabilir.

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