Bir öğenin jQuery ile bir CSS sınıfı olup olmadığını belirleme


173

Ben jQuery ile çalışma ve öğe ile ilişkili belirli bir CSS sınıfı olup olmadığını belirlemek için kolay bir yol olup olmadığını görmek için arıyorum.

Ben elemanın kimliği ve aradığım CSS sınıfı var. Sadece bir if ifadesinde, o sınıfın öğe üzerinde varlığına dayalı bir karşılaştırma yapabilmem gerekiyor.


1
Eğer jQuery olmadan yapmak istiyorsanız , javascript ile “hasClass”?
Oriol

Yanıtlar:


237

hasClassYöntemi kullanın :

jQueryCollection.hasClass(className);

veya

$(selector).hasClass(className);

Argüman (açıkçası) kontrol ettiğiniz sınıfı temsil eden bir dizedir ve bir boolean döndürür (bu nedenle çoğu jQuery yöntemi gibi zincirlemeyi desteklemez).

Not:className Boşluk içeren bir bağımsız değişken iletirseniz, bu sözcük kelimenin tam anlamıyla koleksiyon öğelerinin classNamedizesiyle eşleştirilir . Örneğin, bir öğeniz varsa,

<span class="foo bar" />

o zaman bu geri dönecektir true:

$('span').hasClass('foo bar')

ve bunlar geri dönecek false:

$('span').hasClass('bar foo')
$('span').hasClass('foo  bar')

4
Katılmıyorum. Belgeler kategoriler altında düzenlenmiştir, ancak tüm yöntemleri alfabetik olarak da kolayca görebilirsiniz. Her şey bir örnekle birlikte gelir ve yorumlar bölümü genellikle dışarıda bırakılan her şeyi temizler. jQuery çok sayıda mükemmel işlev ve yardımcı programa sahiptir ve hepsini keşfetmeyi biraz öğrenir. -EDIT- Bu mantıklı, kesinlikle çok yol kat etti.
Trafalmadorian

1
@Trafalmadorian, durumum değiştiği için orijinal yorumumu kaldırdım. Başlangıçta her şeyi -EDIT'den önce yayınlamıştınız ve belge kalitesi hakkındaki yorumumun artık geçerli olmadığını, ancak önceki (MediaWiki) sistemine atıfta bulunduğunu söyledim. Daha sonra önceki yorumunuzu sildiniz ve -EDIT- ile değiştirdiniz. Umarım bu temizlik gelecekteki okuyucular için biraz daha net ve daha az yanıltıcıdır.
göz kapaksızlığı

@daniloquio, doğrudan api.jquery.com'a giderseniz ... bir sebepten dolayı web sitesi hala docs.jquery.com adresindeki korkunç wiki sürümüne bağlanıyor
eyelidlessness

21

dan SSS

elem = $("#elemid");
if (elem.is (".class")) {
   // whatever
}

veya:

elem = $("#elemid");
if (elem.hasClass ("class")) {
   // whatever
}

3
dikkatli olun .is () - "jQuery'deki is () yöntemi, geçerli koleksiyondaki öğelerin HERHANGİ, is tabanlı koleksiyondaki öğelerin HERHANGİ biriyle eşleşirse true değerini döndürür
zack

11

Olumsuzluğa gelince, bir öğenin bir sınıfı olmadığını bilmek istiyorsanız, Mark'ın söylediği gibi yapabilirsiniz.

if (!currentPage.parent().hasClass('home')) { do what you want }

3

JQuery olmadan:

var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1;

Veya:

function hasClass(e,c){
    return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1);
}
/*example of usage*/
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium');

Bu jQuery'den daha hızlı!


neden yapıyorsun ...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1), sadece değil &&!(' '+e.classname+' ').indexOf(' '+c+' ')?
Blexy

1
Çünkü indexOfgeri dönüş -1sınıf yok. Eğer yaparsam !!-1, olur true. Yaptığımdan beri !!-1+1yanlış olacak. Daha iyi bir yol olurdu ...&&!!~(' '+e.className+' ').indexOf(' '+c+' '), ama o zamanlar hatırlamıyordum.
Ismael Miguel

Üzgünüm, demek istediğim...&&~(' '+e.className+' ').indexOf(' '+c+' ')
Ismael Miguel

3

Buraya inen ama aslında bunu yapmanın jQuery ücretsiz bir yolunu arayan herkese yardım etmek adına:

element.classList.contains('your-class-name')


0
 $('.segment-name').click(function () {
    if($(this).hasClass('segment-a')){
        //class exist
    }
});

0

Benim durumumda, bir jQuery işlevini kullandım, farklı css sınıfları eklenmiş bir HTML öğesi vardı, bunların ortasında belirli bir sınıf arıyordum, bu yüzden kullandım "is" kontrol etmek için iyi bir alternatif zaten başka css sınıfları olan bir html öğesine dinamik olarak eklenen bir sınıf, başka bir iyi alternatiftir.

basit bir örnek:

 <!--element html-->
 <nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>

 <!--jQuery "is"-->
 $('#menu').is('.cbp-spmenu-open');

gelişmiş örnek:

 <!--element html-->
    <nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>

   <!--jQuery "is"-->
    if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){
       $("#menu").show();
    }
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.