478 Stimmen

Was ist die Funktion "hasClass" in einfachem JavaScript?

Wie machen Sie jQuery's hasClass mit einfachem altem JavaScript? Zum Beispiel,

<body class="foo thatClass bar">

Wie lautet die JavaScript-Methode, um zu fragen, ob <body> hat thatClass ?

1486voto

Damien Punkte 25589

Verwenden Sie einfach classList.contains() :

if (document.body.classList.contains('thatClass')) {
    // do some stuff
}

Andere Verwendungen von classList :

document.body.classList.add('thisClass');
// $('body').addClass('thisClass');

document.body.classList.remove('thatClass');
// $('body').removeClass('thatClass');

document.body.classList.toggle('anotherClass');
// $('body').toggleClass('anotherClass');

Browser-Unterstützung:

  • Chrom 8.0
  • Firefox 3.6
  • IE 10
  • Oper 11,50
  • Safari 5.1

classList Browser-Unterstützung

118voto

SLaks Punkte 832502

Sie können prüfen, ob element.className passt zu /\bthatClass\b/ .
\b entspricht einem Wortumbruch.

Oder Sie können die eigene Implementierung von jQuery verwenden:

var className = " " + selector + " ";
if ( (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(" thatClass ") > -1 ) 

Um Ihre allgemeinere Frage zu beantworten, können Sie sich die jQuery's Quellcode auf github oder in der Quelle für hasClass speziell in diesem Source Viewer .

36voto

raveren Punkte 16958

Der wirksamste One-Liner, der

  • gibt einen booleschen Wert zurück (im Gegensatz zur Antwort von Orbling)
  • Liefert kein falsches Ergebnis bei der Suche nach thisClass auf ein Element, das den class="thisClass-suffix" .
  • ist mit jedem Browser bis mindestens IE6 kompatibel

function hasClass( target, className ) {
    return new RegExp('(\\s|^)' + className + '(\\s|$)').test(target.className);
}

33voto

az-stive Punkte 337
// 1. Use if for see that classes:

if (document.querySelector(".section-name").classList.contains("section-filter")) {
  alert("Grid section");
  // code...
}

<!--2. Add a class in the .html:-->

<div class="section-name section-filter">...</div>

32voto

Orbling Punkte 20005

Das Attribut, in dem die verwendeten Klassen gespeichert sind, lautet className .

Sie können also sagen:

if (document.body.className.match(/\bmyclass\b/)) {
    ....
}

Wenn Sie einen Ort suchen, der Ihnen zeigt, wie jQuery alles macht, würde ich empfehlen:

http://code.jquery.com/jquery-1.5.js

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X