jQuery: Ruft den ausgewählten Element-Tag-Namen ab


Antworten:


1031

Sie können anrufen .prop("tagName"). Beispiele:

jQuery("<a>").prop("tagName"); //==> "A"
jQuery("<h1>").prop("tagName"); //==> "H1"
jQuery("<coolTagName999>").prop("tagName"); //==> "COOLTAGNAME999"


Wenn das Schreiben .prop("tagName")mühsam ist, können Sie eine benutzerdefinierte Funktion wie folgt erstellen:

jQuery.fn.tagName = function() {
  return this.prop("tagName");
};

Beispiele:

jQuery("<a>").tagName(); //==> "A"
jQuery("<h1>").tagName(); //==> "H1"
jQuery("<coolTagName999>").tagName(); //==> "COOLTAGNAME999"


Beachten Sie, dass Tag-Namen gemäß Konvention CAPITALIZED zurückgegeben werden . Wenn der zurückgegebene Tag-Name nur in Kleinbuchstaben angegeben werden soll, können Sie die benutzerdefinierte Funktion folgendermaßen bearbeiten:

jQuery.fn.tagNameLowerCase = function() {
  return this.prop("tagName").toLowerCase();
};

Beispiele:

jQuery("<a>").tagNameLowerCase(); //==> "a"
jQuery("<h1>").tagNameLowerCase(); //==> "h1"
jQuery("<coolTagName999>").tagNameLowerCase(); //==> "cooltagname999"

18
Ab jQuery 1.6 sollte dies sein .prop.
— Rocket Hazmat

3
Wird die Großschreibungskonvention von allen Browsern befolgt? Wenn nicht, normalisiert jQuery dies?
— Callum

8
tagName ist Teil der DOM-Spezifikation und wird immer großgeschrieben.
— tilleryj

Beachten Sie, dass sich die zurückgegebene Zeichenfolge in GROSSBUCHSTABEN befindet. Dies ist ein Problem, wenn Sie beispielsweise versuchen, es mit "div" oder "a" zu vergleichen.
— Hartley Brody

3
Verwenden toLowerCase()oder toUpperCase()kann hilfreich sein, wenn Sie das prop('tagName')Ergebnis mit einem Tag-Namen vergleichen. if($("my_selector").prop("tagName").toLowerCase() == 'div')oderif($("my_selector").prop("tagName").toUpperCase() == 'DIV')
— S.Thiongane

99

Sie können die nodeNameEigenschaft des DOM verwenden :

$(...)[0].nodeName

Vielen Dank. Funktioniert hervorragend - obwohl ich die jQueryish-Version verwenden werde, weil ich mich gerade in einer jQuery-Welt befinde.
— Konfigurator

6
reine JS-Lösungen (wie diese) sind jQuery-Lösungen im Allgemeinen überlegen, insbesondere wenn sie nicht unter Browserkompatibilitätsproblemen leiden oder viel ausführlicher sind.
— Steven Lu

25
... und speziell aufgrund dieser Probleme mit der Browser-Inkompatibilität sind die jQuery-Probleme oft überlegen, wenn jemand eine Lösung auswählt und nicht genau weiß, auf welche Browser-Inkompatibilitäten zu achten ist. ;)
— Scott Stafford

4
Ich halte dies für überlegen, da es egal ist, um welche jQuery-Version es sich handelt. Diese Lösung funktioniert auf allen Versionen. +1
— Stijn de Witt

7
Insbesondere, wenn Sie sich in einer each () - ähnlichen Situation befinden, in der Sie das Element in ein jquery-Objekt zurücksetzen müssen, um eine Eigenschaft zu erhalten, die bereits vorhanden war $(this).prop('tagname'). this.nodeName ist oft effizienter. +1
— Commonpike


46

jQuery 1.6+

jQuery('selector').prop("tagName").toLowerCase()

ältere Versionen

jQuery('selector').attr("tagName").toLowerCase()

toLowerCase () ist nicht obligatorisch.


Warum machst new Stringdu
— Rocket Hazmat

Weil toLowerCase () eine Methode von String
— Dayron Gallardo

23

Dies ist ein weiterer Weg:

$('selector')[0].tagName

Schön! Klarer als NodeName und noch kürzer. : P
— Dennis98

11

Sie sollten NICHT verwenden jQuery('selector').attr("tagName").toLowerCase(), da es nur in älteren Versionen von Jquery funktioniert.

Sie können verwenden, $('selector').prop("tagName").toLowerCase()wenn Sie sicher sind, dass Sie eine Version von jQuery verwenden, die> = Version 1.6 ist.


Hinweis :

Sie denken vielleicht, dass JEDER jQuery 1.10+ oder etwas anderes verwendet (Januar 2016), aber leider ist das nicht wirklich der Fall. Beispielsweise verwenden heute noch viele Benutzer Drupal 7, und jede offizielle Version von Drupal 7 enthält bis heute standardmäßig jQuery 1.4.4.

Wenn Sie also nicht sicher sind, ob Ihr Projekt jQuery 1.6+ verwenden wird, sollten Sie eine der Optionen in Betracht ziehen, die für ALLE Versionen von jQuery funktionieren:

Option 1 :

jQuery('selector')[0].tagName.toLowerCase()

Option 2

jQuery('selector')[0].nodeName.toLowerCase()

0

nodeName gibt Ihnen den Tag-Namen in Großbuchstaben, während localName Ihnen den Kleinbuchstaben gibt.

$("yourelement")[0].localName 

wird dir geben: dein Element statt DEINELEMENT

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.