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.