Wie kann ich überprüfen , ob $(this)
eine ist div
, ul
oder blockquote
?
Zum Beispiel:
if ($(this) is a div) {
alert('its a div!');
} else {
alert('its not a div! some other stuff');
}
javascript
jquery
html
css
James
quelle
quelle
$(this).get(0)
gleichbedeutend ist,this
aber ohne Overhead?this
.$(this).get(0)
Takesthis
(ein normaler JS-DOM-Knoten) konvertiert ihn in ein jQuery-Objekt,.get(0)
wird ausgeführt und wählt den ersten regulären DOM-Knoten innerhalb des jQuery-Objekts aus. Das heißt, Sie gelangen zurück zu Ihrem Ausgangspunkt.this.tagName = $(this)[0].tagName = $(this).get(0).tagName
.this
jedoch bereits ein DOM-Element ist. Versuche es einfachthis === $(this).get(0)
.Lösungen ohne jQuery sind bereits veröffentlicht, daher werde ich die Lösung mit jQuery veröffentlichen
$(this).is("div,ul,blockquote")
quelle
Ohne jQuery kann man sagen
this.tagName === 'DIV'
Denken Sie daran, dass das 'N' in
tagName
Großbuchstaben geschrieben ist.Oder mit mehr Tags:
/DIV|UL|BLOCKQUOTE/.test(this.tagName)
quelle
Um zu überprüfen, ob dieses Element DIV ist
if (this instanceof HTMLDivElement) { alert('this is a div'); }
Gleiches gilt für
HTMLUListElement
UL,HTMLQuoteElement
für Blockquotequelle
if(this.tagName.toLowerCase() == "div"){ //it's a div } else { //it's not a div }
edit: während ich schrieb, wurden viele antworten gegeben, sorry für das verdoppeln
quelle
$(this).tagName
ist einfach falsch. Du meinst$(this).attr('tagName')
Durch jQuery können Sie Folgendes verwenden
$(this).is('div')
:quelle
Einige dieser Lösungen gehen etwas über Bord. Alles, was Sie brauchen, ist
tagName
normales altes JavaScript. Sie profitieren nicht wirklich davon, wenn Sie das Ganze erneut in jQuery einbinden und insbesondere einige der leistungsstärkeren Funktionen in der Bibliothek ausführen, um den Tag-Namen zu überprüfen. Wenn Sie es auf dieser Seite testen möchten, finden Sie hier ein Beispiel.$("body > *").each(function() { if (this.tagName === "DIV") { alert("Yeah, this is a div"); } else { alert("Bummer, this isn't"); } });
quelle
Ich verbessere die Antwort von Andreq Frenkel, wollte nur einige hinzufügen und es wurde zu lang, also hier weg ...
Wenn
input
ich an CustomElements denke, die die vorhandenen erweitern, und trotzdem prüfen kann, ob ein Element beispielsweise vorhanden ist, denke ich, dass diesinstanceof
die beste Lösung für dieses Problem ist.Man sollte sich jedoch bewusst sein, dass
instanceof
die referenzielle Gleichheit verwendet wird, sodassHTMLDivElement
ein übergeordnetes Fenster nicht mit dem eines seineriframe
(oder Schatten-DOMs usw.) identisch ist .Um diesen Fall zu behandeln, sollte man die Klassen des eigenen Fensters des überprüften Elements verwenden, etwa:
element instanceof element.ownerDocument.defaultView.HTMLDivElement
quelle
Alte Frage, aber da keine der Antworten dies erwähnt, könnte eine moderne Alternative ohne Abfrage nur einen CSS-Selektor und Element.matches () verwenden.
element.matches('div, ul, blockquote');
quelle
Versuchen Sie es mit tagName
quelle
let myElement =document.getElementById("myElementId"); if(myElement.tagName =="DIV"){ alert("is a div"); }else{ alert("is not a div"); } /*What ever you may need to know the type write it in capitalised letters "OPTIO" ,"PARAGRAPH", "SPAN" AND whatever */
quelle