Jquery: Elemanın belirli bir css sınıfına / stiline sahip olup olmadığı nasıl kontrol edilir


86

Bir div var:

<div class="test" id="someElement" style="position: absolute"></div>

Belirli öğenin şunları kontrol etmenin herhangi bir yolu var mı:

$("#someElement") 

belirli bir sınıfa sahiptir (benim durumumda "test").

Alternatif olarak, en elementin belirli bir tarzı olup olmadığını kontrol etmenin bir yolu var mı? Bu örnekte, öğenin " position: absolute" olup olmadığını bilmek istiyorum .

Çok teşekkür ederim!


14
sorunun mu yoksa cevabın mı yanlış olduğundan emin değilim, ancak sorunun stili = "test" ve yanıtta class = "test"
aranıyor

1
Benim tahminim, yanlış cevabı doğru olarak işaretlediği için soru yanlış; ama ne olursa olsun, oylara baktıktan sonra, sanırım çoğu insan bu yanlış soruya doğru cevabı bulmak için burada tökezledi ... ee, eğer herhangi bir anlam ifade ediyorsa ... DrJokepu'nun cevabı, yani. En azından bu yüzden buradayım.
BrainSlugs83

Yanıtlar:


58
if($('#someElement').hasClass('test')) {
  ... do something ...
}
else {
  ... do something else ...
}

75
Bu soruyu sorulduğu şekilde yanıtlamaz - aşağıdaki DrJokepu'nun cevabına bakın.
Ryan Burney

281

CSS Stilleri anahtar / değer çiftleridir, yalnızca "etiketler" değildir. Varsayılan olarak, her öğeye atanmış tam bir CSS stilleri seti vardır, bunların çoğu tarayıcı varsayılanlarını örtük olarak kullanır ve bazıları CSS stil sayfalarında açıkça yeniden tanımlanır.

Bir elemanın belirli bir CSS girişine atanan değeri almak ve karşılaştırmak için:

if ($('#yourElement').css('position') == 'absolute')
{
   // true
}

Stili yeniden tanımlamadıysanız, o öğe için tarayıcı varsayılanını alacaksınız.


3
Bir seçici ile yapmanın bir yolu yok mu?
BrainSlugs83

bununla gerçek özelliğin ne olduğunu görebilirsiniz, bilmem gereken şey bu özelliğin doğrudan ayarlanması veya css stilinden / tarayıcıdan miras alınmasıdır ... bu mümkün mü?
ante.sabo

Sayfa yüklendikten sonra bir nesnenin DOM değişir / css değeri değişirse senaryo için çalışmıyor gibi görünüyor. DOM yüklendikten sonra css değişikliklerini nasıl izleyeceğiniz hakkında bir fikriniz var mı?
Köprücük Kemiği

@Collarbone Doküman yüklendikten sonra çağrıyı bir saniye kadar geciktirmek için her zaman setTimeout () ve clearTimeout () kullanabilirsiniz.
probie

13
if ($("element class or id name").css("property") == "value") {
    your code....
}

4

Ya da, bu özelliğe sahip öğeye erişmeniz gerekiyorsa ve bir id kullanmıyorsa, şu rotaya gidebilirsiniz:

$("img").each(function () {
        if ($(this).css("float") == "left") { $(this).addClass("left"); }
        if ($(this).css("float") == "right") { $(this).addClass("right"); }
    })

1

bir çözüm buldum:

$("#someElement")[0].className.match("test")

ama bir şekilde daha iyi bir yol olduğuna inanıyorum!


1

Soru iki farklı şey soruyor:

  1. Bir elemanın belirli bir sınıfı vardır
  2. Bir öğenin belirli bir stili vardır.

İkinci soru zaten cevaplandı. İlki için şu şekilde yapardım:

if($("#someElement").is(".test")){
    // Has class test assigned, eventually combined with other classes
}
else{
    // Does not have it
}
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.