Отримання класу елемента, який запускає подію за допомогою JQuery


82

чи є в будь-якому випадку отримати клас при запуску події кліку. Мій код, як показано нижче, працює лише для ідентифікатора, але не для класу.

$(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, тому атрибут class зіставляється із classNameвластивістю DOM. Використовуйте event.target.className.
RobG

Відповіді:


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');

і додати або видалити їх за допомогою addClass і removeClass .


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


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

Thx за приємні відповіді!


targetпрацює з Firefox, знадобився б IE / EdgesrcElement
Хасан Бейг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.