クリックされた要素のクラスを取得するにはどうすればよいですか?


228

classクリックした要素の値を取得する方法がわかりません。

以下のコードを使用すると、毎回「node-205」が表示されます。

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>

あなたの質問はかなり不明確です...あなたはjqueryプラグインを使用していますか?
jrharshath 2009年

クリックされたアイテムの場合、click()関数を使用してイベントをバインドし、クラスを取得しませんか?多分私は質問を完全に理解しなかった...
e-satis

回答:


396

次に、クリックイベントを各「li」タグに追加し、クリックされた要素のクラス属性を取得するjQueryの簡単な例を示します。それが役に立てば幸い。

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

同様に、jQueryでオブジェクトをラップする必要はありません。

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

また、新しいブラウザでは、クラス名の完全なリストを取得できます

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

classList古いブラウザで以下を使用してエミュレートできますmyClass.split(/\s+/);


1
「クラス」は有効な変数名ではありません。
フレッド・バーグマン、

1
jQueryが長い道のりである面白い状況の1つ。this.classNameは$(this).attr( "class")と同じものを提供します
David Gilbertson

要素に複数のクラス名がある場合はどうなりますか?
Dharman 2013年

1
理由はわかりませんが、2番目の例ではクラス名を取得できません。しかし、最初の例はうまくいきます!ありがとう!私にトンを助けました。:)
Chiefwarpaint 2018


28

この質問を見たので、もう少し詳しく説明します。これは、@ SteveFentonの考えを拡張したものです。clickイベントを各li要素にバインドする代わりに、イベントをul下から委譲する方が効率的です。

jQuery 1.7以降の場合

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

ドキュメンテーション: .on()

jQuery 1.4.2-1.7の場合

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

ドキュメンテーション: .delegate()

jQuery 1.3-1.4の最後の手段として

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

または

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

ドキュメンテーション: .live()


17

これでうまくいくはずです:

...
select: function(event, ui){ 
   ui.tab.attr('class');
} ,
...

ui.tabの詳細については、http: //jqueryui.com/demos/tabs/#Eventsを参照してください。


これは何を意味するのでしょうか?それについてもっと説明してもらえますか?

使用する必要があるui.itemの代わりにui.tabです。ui.itemだと思いました。
jeroen.verhoest 2009

11

提供されるすべてのソリューションでは、事前にクリックする要素知る必要がありますクリックした要素からクラスを取得したい場合は、次を使用できます。

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

2
IDの取得が信頼できない場合、$(e.target)代わりにいつでも使用でき$('#' + e.target.id)、jQueryはこのケースを合理的に処理します。
BobChao87

9
$("div").click(function() {
  var txtClass = $(this).attr("class");
  console.log("Class Name : "+txtClass);
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.