JQuery kullanarak sınıf adı alma


603

Sınıf adını jQuery kullanarak almak istiyorum

Ve eğer bir kimliği varsa

<div class="myclass"></div>

2
@Amarghosh: Doğru, doğru, ama aslında bazı çapraz yöntemler kullanırsanız bu duruma girebilirsiniz parents().
Boldewyn

8
fyi this.classNamejquery olmadan çalışır ( "myclass"yukarıdaki örnekte dönecekti )
Peter Berg

Yanıtlar:


1062

Öğeyi kendi sınıfından başka yollarla jQuery nesnesi olarak aldıktan sonra,

var className = $('#sidebar div:eq(14)').attr('class');

hile yapmalı. Kimlik kullanımı için .attr('id').

Öğenin sarmalayıcı olmadan saf DOM düğümü olduğu bir olay işleyicisinin veya başka bir jQuery yönteminin içindeyseniz, şunları kullanabilirsiniz:

this.className // for classes, and
this.id // for IDs

Her ikisi de standart DOM yöntemleridir ve tüm tarayıcılarda iyi desteklenir.


7
ve eğer bir ID var ise IDName = $ ('# id'). attr ('id');
X10nD

18
Sandino'nun cevabında belirttiği gibi, her zaman birden fazla sınıf adının belirlenmesi şansı vardır. (örneğin, JQuery-UI her yere yardımcı sınıflar ekler). Bunu kullanarak her zaman kontrol edebilirsin if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
Potherca

17
Eğer kaldıraç kullanırsanız .attr('class')ve onu birleştirirseniz if(className.indexOf('Class_I_am_Looking_For') > = 0), belirli bir sınıfın varlığını kolayca kontrol edebilir ve yine de birden fazla sınıfı işleyebilirsiniz.
RonnBlack

18
RonnBlack: if(className.indexOf('Class_I_am_Looking_For') > = 0)Ayrıca maç"This_Is_Not_the_Class_I_am_Looking_For"
Leif Neland

1
@BenRacicot bu durumda standart DOM yöntemlerini kullanmanız yeterlidir .
Boldewyn

227

.hasClass()Bir öğenin belirli olup olmadığını kontrol etmek istediğinizde kullanmak daha iyidir class. Bunun nedeni, bir elemanın birden fazla classolması durumunda kontrol edilmesi önemsiz değildir.

Misal:

<div id='test' class='main divhover'></div>

Nerede:

$('#test').attr('class');        // returns `main divhover`.

İle sınıfın .hasClass()olup olmadığını test edebiliriz .divdivhover

$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main');     // returns true

13
Ama ne olursa yok sınıfadı biliyoruz? ;-)
Potherca

10
bu doğru ... Bu sadece kontrol ettiğiniz sınıf adını biliyorsanız faydalıdır ... ama benim yorumum, dom öğesinde sınıf yerine .hasClass
sandino

4
Başka bir yol kullanmaktır.is('.divhover')
orad

Bir elemanın sınıfları arasında döngü yapmak mümkün müdür?
Fractaliste

3
Evet sadece $ (element) .attr ("class"). Split (''); ve bir liste olsun sonra sadece bir for ya da foreach döngüsü kullanın
sandino

38

Dikkatli Olun, Belki bir sınıfınız ve bir alt sınıfınız vardır.

  <div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>

Önceki çözümleri kullanırsanız, sahip olacaksınız:

myclass mysubclass

Sınıf seçiciye sahip olmak istiyorsanız , aşağıdakileri yapın:

var className = '.'+$('#id').attr('class').split(' ').join('.')

ve sahip olacaksın

.myclass.mysubclass

Şimdi yukarıdaki div gibi aynı sınıfa sahip tüm öğeleri seçmek istiyorsanız:

   var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))

bunun anlamı

var brothers=$('.myclass.mysubclass')

2018 Güncellemesi

VEYA vanilya javascript ile 2 satırda uygulanabilir:

  const { classList } = document.querySelector('#id');
  document.querySelectorAll(`.${Array.from(classList).join('.')}`);

6
Sınıflar arasında birden fazla boşluk olabilir. Daha doğru varyant var className = '.' + $ ('# İd'). Attr ('sınıf'). Değiştirin (/ + (? =) / G, ''). Bölünmüş ('') .join ('. ')
Suhan

3
Daha da daha doğru bir ifade '.'+$('#id').attr('class').split(/[ \n\r\t\f]+/).join('.')için, uzay, Sekme LF, CR FF ayrı sınıflara izin verilir. ( .split()ayrıca RegExps'i de kabul eder.)
Boldewyn

'.'+$('#id').attr('class').split(/\s+/).join('.')daha özlü olur, değil mi? Ya da bu benim düşünmediğim bir şeyle uyuşur mu?
LostHisMind

1
Güvende olmak ve bu çözümlerden herhangi biriyle birlikte herhangi bir nokta elde etmemek için, böyle bir düzeltme ekleyin.attr('class').trim().split(...)
Christian Lavallee

28

Bu, bir öğeyi kullanarak ikinci sınıfı birden çok sınıfa almaktır

var class_name = $('#videobuttonChange').attr('class').split(' ')[1];


11

Eğer <div>bir id:

​<div id="test" class="my-custom-class"></div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

...deneyebilirsin:

var yourClass = $("#test").prop("class");

Eğer senin <div>sadece vardır class, deneyebilirsin:

var yourClass = $(".my-custom-class").prop("class");

6

Sınıf adlarını ayıklamak için split işlevini kullanacaksanız, beklenmedik sonuçlar doğurabilecek olası biçimlendirme varyasyonlarını telafi etmeniz gerekecektir. Örneğin:

" myclass1  myclass2 ".split(' ').join(".")

üretir

".myclass1..myclass2."

Sınıf adları için izin verilen karakter kümesiyle eşleştirmek için normal bir ifade kullanmaktan daha iyi olduğunu düşünüyorum. Örneğin:

" myclass1  myclass2  ".match(/[\d\w-_]+/g);

üretir

["myclass1", "myclass2"]

Normal ifade muhtemelen tam değildir, ama umarım benim açımdan anlarsınız. Bu yaklaşım, kötü biçimlendirme olasılığını azaltır.


6

Whitestock cevabını (bulduğum en iyisi) tamamlamak için yaptım:

className = $(this).attr('class').match(/[\d\w-_]+/g);
className = '.' + className.join(' .');

Yani için "sinif1 sinif2" sonuç olacak ' .myclass1 .myclass2'


5

Sınıf Adını iki yolla alabilirsiniz:

var className = $('.myclass').attr('class');

VEYA

var className = $('.myclass').prop('class');

5
<div id="elem" class="className"></div>

Javascript ile

document.getElementById('elem').className;

JQuery ile

$('#elem').attr('class');

VEYA

$('#elem').get(0).className;

2

Sınıf adını bilmiyorsanız AMA kimliği biliyorsunuz, bunu deneyebilirsiniz:

<div id="currentST" class="myclass"></div>

Ardından şunu kullanarak arayın:

alert($('#currentST').attr('class'));

2

Div sınıflarını almak ve herhangi bir sınıfın olup olmadığını kontrol etmek istiyorsanız basit kullanın.

if ( $('#div-id' ).hasClass( 'classname' ) ) {
    // do something...
}

Örneğin;

if ( $('body').hasClass( 'home' ) ) {
    $('#menu-item-4').addClass('active');
}

2

Dene

HTML

<div class="class_area-1">
    area 1
</div>

<div class="class_area-2">
    area 2
</div>

<div class="class_area-3">
    area 3
</div>

jQuery

<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="application/javascript">
    $('div').click(function(){
        alert($(this).attr('class'));
    });
</script>

0

tekli varsa veya ilk divelementi istiyorsak kullanabiliriz

$('div')[0].classNameaksi takdirde idbu öğeden birine ihtiyacımız var


0

Bir kodumuz varsa:

<div id="myDiv" class="myClass myClass2"></div> 

jQuery kullanarak sınıf adını almak için basit bir eklenti yöntemi tanımlayabilir ve kullanabiliriz:

$.fn.class = function(){
  return Array.prototype.slice.call( $(this)[0].classList );
}

veya

 $.fn.class = function(){
   return $(this).prop('class');
 } 

Yöntemin kullanımı şöyle olacaktır:

$('#myDiv').class();

Ekli sınıfların yalnızca birinci sınıfını döndüren native method element.className öğesinin aksine sınıfların bir listesini döndüreceğini fark etmeliyiz. Çoğu zaman öğeye bağlı birden fazla sınıf olduğundan, bu yerel yöntemi değil, element.classlist'i veya yukarıda açıklanan yöntemi kullanmanızı öneririm.

İlk varyantı sınıfların listesini dizi, ikincisi boşluklarla ayrılmış dize sınıfı adları olarak döndürür:

// [myClass, myClass2]
// "myClass myClass2"

Bir başka önemli uyarı, jQuery yönteminin yanı sıra her iki yöntemin de

$('div').prop('class');

diğer birçok öğeye işaret eden daha yaygın bir seçici kullanırsak, yalnızca jQuery nesnesi tarafından yakalanan ilk öğenin sınıf listesini döndürür. Böyle bir durumda, öğeyi işaretlememiz gerekir, sınıflarını bir indeks kullanarak elde etmek isteriz, ör.

$('div:eq(2)').prop('class');

Bu, bu sınıflarla ne yapmanız gerektiğine de bağlıdır. Sadece bu kimliğe sahip öğenin sınıf listesine bir sınıf kontrol etmek istiyorsanız, sadece "hasClass" yöntemini kullanmalısınız:

if($('#myDiv').hasClass('myClass')){
   // do something
}

yukarıdaki yorumlarda belirtildiği gibi. Ancak tüm sınıfları seçici olarak almanız gerekirse, bu kodu kullanın:

$.fn.classes = function(){
   var o = $(this);
   return o.prop('class')? [''].concat( o.prop('class').split(' ') ).join('.') : '';
 } 

 var mySelector = $('#myDiv').classes();

Sonuç:

// .myClass.myClass2

ve dinamik olarak belirli bir yeniden yazma css kuralı oluşturabilirsiniz.

Saygılarımızla



-1

Javascript veya jquery'de sınıf adı almanın en iyi yolu

attr() öznitelik işlevi özniteliği almak ve ayarlamak için kullanılır.


Sınıf Alın

jQuery('your selector').attr('class');  // Return class

Sınıfın var olup olmadığını kontrol edin

The hasClass() method checks if any of the selected elements have a specified class name.

 if(jQuery('selector').hasClass('abc-class')){
        // Yes Exist
    }else{
        // NOt exists
    }

Sınıfı Ayarla

jQuery('your selector').attr('class','myclass');  // It will add class to your selector

JQuery kullanarak düğmeyi tıklatarak Sınıf Alın

jQuery(document).on('click','button',function(){
     var myclass = jQuery('#selector').attr('class');
});

Seçicide jQuery kullanarak herhangi bir sınıf yoksa sınıf ekleyin

if ( $('#div-id' ).hasClass( 'classname' ) ) {
        // Add your code
    }

Bir öğeyi kullanarak ikinci sınıfı birden çok sınıfa alın

Change array position in place of [1] to get particular class.

var mysecondclass = $('#mydiv').attr('class').split(' ')[1];

-3

şöyle kullanın: -

$(".myclass").css("color","red");

bu sınıfı birden fazla kullandıysanız, her bir operatörü kullanın

$(".myclass").each(function (index, value) {
//do you code
}
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.