JQueryを使用してイベントを発生させた要素のクラスを取得する


82

クリックイベントが発生したときにクラスを取得する方法はありますか。以下の私のコードは、idに対してのみ機能し、classに対しては機能しません。

$(document).ready(function() {
  $("a").click(function(event) {
    alert(event.target.id + " and " + event.target.class);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<body>
  <a href="#" id="kana1" class="konbo">click me 1</a>
  <a href="#" id="kana2" class="kinta">click me 2</a>
</body>

</html>

ここにjsfiddleコード


11
クラスはECMAScriptで予約されている作業であるため、クラス属性はclassNameDOMプロパティにマップされます。を使用しevent.target.classNameます。
RobG 2012年

回答:


138

試してください:

$(document).ready(function() {
    $("a").click(function(event) {
       alert(event.target.id+" and "+$(event.target).attr('class'));
    });
});

110

これには完全なクラスが含まれます(要素に複数のクラスがある場合は、スペースで区切られた複数のクラスになる可能性があります)。コードには、「konbo」または「kinta」のいずれかが含まれます。

event.target.className

jQueryを使用して、名前でクラスをチェックできます。

$(event.target).hasClass('konbo');

addClassremoveClass使用してそれらを追加または削除します。


21

以下の配列ですべてのクラスを取得します

event.target.classList

この回答は、@ broeschの回答よりも役立つと思います。依存関係が少なく、現時点ではより自然に見えます。
コクサー

3

$(document).ready(function() {
  $("a").click(function(event) {
    var myClass = $(this).attr("class");
    var myId = $(this).attr('id');
    alert(myClass + " " + myId);
  });
})
<html>

<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>

<body>
  <a href="#" id="kana1" class="konbo">click me 1</a>
  <a href="#" id="kana2" class="kinta">click me 2</a>
</body>

</html>

これは私にとってはうまくいきます。jQueryにはevent.target.class関数はありません。


どういうわけか私はイベントを使わなければなりません、とにかく答えてくれてありがとう。broeschは私が必要なものに答えました。
Redbox 2012年


0

targetすべてのブラウザで動作するとは限らないので注意してください。Chromeでは正常に動作しますが、Firefox(またはIE / Edge、覚えていない)は少し異なり、srcElementを使用していると思います。私は通常次のようなことをします

var t = ev.srcElement || ev.target;

したがって、

$(document).ready(function() {
    $("a").click(function(ev) {
        // get target depending on what API's in use
        var t = ev.srcElement || ev.target;

        alert(t.id+" and "+$(t).attr('class'));
    });
});

いい答えをありがとう!


targetFirefoxで動作し、IE / Edgeが必要になりますsrcElement
Hassan Baig 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.