Bir öğenin belirli bir sınıfı OLMADIĞINI nasıl kontrol edebilirim?


232

Sınıf olup olmadığını nasıl kontrol ederim. Örneğin, sınıf "test" olup olmadığını kontrol etmek nasıl biliyorum, ama sınıf "test" olup olmadığını görmek için nasıl kontrol edebilirim?

if($(this).hasClass("test")){
}

Yanıtlar:


484
if (!$(this).hasClass("test")) {

34
TIMTOWTDI damarında korkunç bir çözüm var: if($(this).is(":not(.test)"))> :)
Phrogz

6
TIMTOWTDIBSCINABTE
Fizzix

25
Herkesin merak etmesi durumunda: Bunu yapmanın birden fazla yolu vardır, ancak bazen tutarlılık da kötü bir şey değildir.
Kaptan Hypertext

145

sdleihssirhc'in cevabı elbette sorudaki durum için doğru olanıdır, ancak belirli bir sınıfa sahip olmayan öğeleri seçmeniz gerekiyorsa, referans olarak değil, seçici seçemezsiniz :

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 

8
IMHO cevabınız en iyisidir. Sdleihssirhc'in cevabı bu sorunun daha doğruysa jQuery ile ilgisi yoktu ve 'bazı koşullar göz önüne alındığında daha iyi formüle edilirse, bu koşulun Javascript'te doğru olmadığını nasıl test ederim'. JQuery ile istediğimiz şey, tüm DOM öğeleri koleksiyonlarında tek nesnelerde olabildiğince kolay çalışmaktır. Cevabınız tam da bu çözümü sunuyor. +1
Stijn de Witt

1
@byronyasgur Orijinal soru bağlamında poster, bilinen belirli bir öğenin sınıfa sahip olup olmadığını test etmek istedi. Bu kod, sınıfa sahip olmayan tüm öğeleri seçer, bu nedenle posterin sorununu çözmez. Bunu neden en başta gönderdiğimi hatırlamıyorum.
JJJ

14

"Abc" sınıfına sahip, "xyz" sınıfına sahip olmayan öğeyi (veya öğe grubunu) seçin:

    $('.abc:not(".xyz")')

Normal CSS seçerken kullanabilirsiniz .abc:not(.xyz).


6

.not () yöntemini kullanın ve bir özellik olup olmadığını kontrol edin:

$('p').not('[class]');

Buradan kontrol edin: http://jsfiddle.net/AWb79/


8
Bu tamamen yanlış. Köşeli ayraçlar sınıflar için değil, öznitelikleri tanımlayan seçiciler için kullanılır.
Misterparker

1
Aslında tamamen doğru. '[Class]', bir sınıfa sahip olmamayı (olmamak) özniteliğini doğru olarak tanımlar.
Deborah

@Misterparker sınıfları özniteliklerdir.
Matthew Cira

Bir öğe belirli bir sınıfı varsa bu kontroller nitelik sınıf değeri olduğu gibi, mevcut değil durum buysa
Mark

6

Bunu deneyebilirsiniz:

<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>

$(document).ready(function(){
    $("#div2").not('.myClass');  // do not have `myClass` class.
});

Bu cevap sayfaya herhangi bir değer katmıyor, 7 yıl önce gönderildi. Lütfen asla yalnızca kod göndermeyin ve içeriği kopyalamayın.
mickmackusa


0

Bu 6 yıl sonra okuma ve TIMTOWTDI damarında da bir kesmek olacağını düşündüm ...: D, yanlış 'JS görgü kuralları' değil umuyorum.

Ben genellikle durumu ile bir var kurmak ve sonra daha sonra bakın .. ben;

// var set up globally OR locally depending on your requirements
var hC;

function(el) {
  var $this = el;
  hC = $this.hasClass("test");

  // use the variable in the conditional statement
  if (!hC) {
    //
  }
}

Ben esas olarak koşullu üçlü operatörü kullanmak ve temiz kod istiyorum çünkü bunu yapmak bahsetmek gerekir. Yani bu durumda, sahip olduğum tek şey şu:

hC ? '' : foo(x, n) ;
   // OR -----------
!hC ? foo(x, n) : '' ;

...bunun yerine:

$this.hasClass("test") ? '' : foo(x, n) ;
   // OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;

0

Nedenini bilmiyorum ama kabul edilen cevap benim için işe yaramadı. Bunun yerine bu işe yaradı:

if ($(this).hasClass("test") !== false) {}

Bu aslında "test" sınıfı olup olmadığını kontrol eder. Sınıfı "test" OLMADIĞINI kontrol etmek için, "! == false" yerine "=== false" veya "! == true" olmalıdır.
Lisa Cerilli
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.