Tıklanan öğenin sınıfı nasıl alınır?


228

classTıklanan öğenin değerini nasıl alacağımı anlayamıyorum.

Aşağıdaki kodu kullandığımda, her zaman "düğüm-205" olsun .

jQuery:

.find('> ul')
.tabs(
{
    selectedClass: 'active',
    select: function (event, ui) {
        //shows only the first element of list
        $(this).children('li').attr('class');
    },
    cookie: { expires: 0 },
    fx: fx
})

HTML:

<ul class="tabs">
  <li class="node-205"></li>
  <li class="node-150"></li>
  <li class="node-160"></li>
</ul>

Sorunuz oldukça belirsiz ... herhangi bir jquery eklentisi kullanıyor musunuz?
— jrharshath

Tıklanan bir öğe ise, etkinliği bağlamak ve sınıfı almak için click () işlevini kullanmamalısınız? Belki de soruyu tam olarak anlamadım ...
— e-satis

Yanıtlar:


396

Aşağıda, her "li" etiketine bir tıklama olayı ekleyen ve ardından tıklanan öğenin sınıf niteliğini alan hızlı bir jQuery örneği verilmiştir. Umarım yardımcı olur.

$("li").click(function() {
   var myClass = $(this).attr("class");
   alert(myClass);
});

Aynı şekilde, nesneyi jQuery'ye sarmanız gerekmez:

$("li").click(function() {
   var myClass = this.className;
   alert(myClass);
});

Daha yeni tarayıcılarda sınıf adlarının tam listesini alabilirsiniz :

$("li").click(function() {
   var myClasses = this.classList;
   alert(myClasses.length + " " + myClasses[0]);
});

classListEski tarayıcılarda aşağıdakileri kullanarak taklit edebilirsiniz:myClass.split(/\s+/);


1
"class" geçerli bir değişken adı değil.
— Fred Bergman

1
JQuery'nin uzun yol olduğu komik durumlardan biri. this.className size $ (this) .attr ("class") ile aynı şeyi verecektir
— David Gilbertson

öğenin birden fazla sınıf adı varsa ne olur?
— Dharman

1
Neden olduğundan emin değilim ama 2. örnek benim için sınıf adını alamıyor. Ancak, ilk örnek harika çalışıyor! Teşekkürler! Bana bir ton yardım etti. :)
— Chiefwarpaint

38
$("li").click(function(){
    alert($(this).attr("class"));
});

28

Bu soruyu gördüm, bu yüzden biraz daha genişleyebileceğimi düşündüm. Bu @SteveFenton'un sahip olduğu fikrinin bir uzantısı. clickHer liöğeye bir olay bağlamak yerine, olayları öğeden devretmek daha verimli olur.ul aşağıdan .

JQuery 1.7 ve üstü için

$("ul.tabs").on('click', 'li', function(e) {
   alert($(this).attr("class"));
});

Belgeler: .on()

JQuery 1.4.2 - 1.7 için

$("ul.tabs").delegate('li', 'click', function(e) {
   alert($(this).attr("class"));
});

Belgeler: .delegate()

JQuery 1.3 - 1.4 için son çare olarak

$("ul.tabs").children('li').live('click', function(e) {
   alert($(this).attr("class"));
});

veya

$("ul.tabs > li").live('click', function(e) {
   alert($(this).attr("class"));
});

Belgeler: .live()



11

Sağlanan tüm çözümler sizi önceden tıklayacağınız öğeyi bilmeye zorlar . Sınıfı tıklanan herhangi bir öğeden almak istiyorsanız şunları kullanabilirsiniz:

$(document).on('click', function(e) {
    clicked_id = e.target.id;
    clicked_class = $('#' + e.target.id).attr('class');
    // do stuff with ids and classes 
    })

2
Bir kimlik almak güvenilmezse, $(e.target)bunun yerine her zaman kullanılabilir $('#' + e.target.id)ve jQuery'nin bu durumu makul bir şekilde ele alacağı unutulmamalıdır .
— BobChao87

9
$("div").click(function() {
  var txtClass = $(this).attr("class");
  console.log("Class Name : "+txtClass);
});
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.