Sınıf adını jQuery kullanarak almak istiyorum
Ve eğer bir kimliği varsa
<div class="myclass"></div>
this.className
jquery olmadan çalışır ( "myclass"
yukarıdaki örnekte dönecekti )
Sınıf adını jQuery kullanarak almak istiyorum
Ve eğer bir kimliği varsa
<div class="myclass"></div>
this.className
jquery olmadan çalışır ( "myclass"
yukarıdaki örnekte dönecekti )
Yanıtlar:
Öğ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.
if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
.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.
if(className.indexOf('Class_I_am_Looking_For') > = 0)
Ayrıca maç"This_Is_Not_the_Class_I_am_Looking_For"
.hasClass()
Bir öğenin belirli olup olmadığını kontrol etmek istediğinizde kullanmak daha iyidir class
. Bunun nedeni, bir elemanın birden fazla class
olması 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 .div
divhover
$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main'); // returns true
.is('.divhover')
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')
VEYA vanilya javascript ile 2 satırda uygulanabilir:
const { classList } = document.querySelector('#id');
document.querySelectorAll(`.${Array.from(classList).join('.')}`);
'.'+$('#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.)
'.'+$('#id').attr('class').split(/\s+/).join('.')
daha özlü olur, değil mi? Ya da bu benim düşünmediğim bir şeyle uyuşur mu?
.attr('class').trim().split(...)
sadece kullanabilirsiniz,
var className = $('#id').attr('class');
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");
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.
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'
Sınıf Adını iki yolla alabilirsiniz:
var className = $('.myclass').attr('class');
VEYA
var className = $('.myclass').prop('class');
<div id="elem" class="className"></div>
Javascript ile
document.getElementById('elem').className;
JQuery ile
$('#elem').attr('class');
VEYA
$('#elem').get(0).className;
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'));
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');
}
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>
tekli varsa veya ilk div
elementi istiyorsak kullanabiliriz
$('div')[0].className
aksi takdirde id
bu öğeden birine ihtiyacımız var
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
Bu da işe yarıyor.
const $el = $(".myclass");
const className = $el[0].className;
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];
şö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
}
parents()
.