Abrufen der Klasse des Elements, das ein Ereignis ausgelöst hat, mithilfe von JQuery


80

gibt es sowieso, um die Klasse zu erhalten, wenn das Klickereignis ausgelöst wird. Mein Code wie unten, es funktioniert nur für ID, aber nicht Klasse.

$(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 Code hier


11
Klasse ist eine reservierte Arbeit in ECMAScript, daher wird das Klassenattribut der classNameDOM-Eigenschaft zugeordnet. Verwenden Sie event.target.className.
RobG

Antworten:


136

Versuchen:

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

108

Dies enthält die vollständige Klasse (dies können mehrere durch Leerzeichen getrennte Klassen sein, wenn das Element mehr als eine Klasse hat). In Ihrem Code enthält es entweder "konbo" oder "kinta":

event.target.className

Mit jQuery können Sie nach Klassen nach Namen suchen:

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

und um sie mit addClass und removeClass hinzuzufügen oder zu entfernen .


20

Sie erhalten die gesamte Klasse im folgenden Array

event.target.classList

Ich finde diese Antwort hilfreicher als die von @ broesch. Es hat weniger Abhängigkeiten und scheint an dieser Stelle natürlicher zu sein.
Coxer

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>

Das funktioniert bei mir. In jQuery gibt es keine event.target.class-Funktion.


aus irgendeinem grund muss ich das event nutzen, trotzdem danke für die antwort. broesch hat geantwortet was ich brauche.
Redbox

1

Wenn Sie jQuery 1.7 verwenden:

alert($(this).prop("class"));

oder:

alert($(event.target).prop("class"));

0

Vorsichtig, da es targetmöglicherweise nicht mit allen Browsern funktioniert, funktioniert es gut mit Chrome, aber ich denke, Firefox (oder IE / Edge, kann mich nicht erinnern) ist ein bisschen anders und verwendet srcElement. Normalerweise mache ich so etwas

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

so führt zu

$(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'));
    });
});

Danke für die schönen Antworten!


targetfunktioniert mit Firefox, IE / Edge würde brauchensrcElement
Hassan Baig
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.