Ich habe mehrere Elemente auf einer HTML-Seite, die dieselbe Klasse haben - aber sie sind unterschiedliche Elementtypen. Ich möchte den Tag-Namen des Elements herausfinden, während ich sie durchlaufe - aber .attr akzeptiert nicht "Tag" oder "Tagname".
Hier ist was ich meine. Betrachten Sie diese Elemente auf einer Seite:
<h1 class="rnd">First</h1>
<h2 id="foo" class="rnd">Second</h2>
<h3 class="rnd">Third</h3>
<h4 id="bar" class="rnd">Fourth</h4>
Jetzt möchte ich so etwas ausführen, um sicherzustellen, dass meine Elemente alle eine ID haben, wenn noch keine definiert wurde:
$(function() {
$(".rnd").each(function(i) {
var id = $(this).attr("id");
if (id === undefined || id.length === 0) {
// this is the line that's giving me problems.
// .attr("tag") returns undefined
$(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());
}
});
});
Das Ergebnis, das ich möchte, wäre, dass die H2- und H4-Elemente dann eine ID von haben würden
rndh2_1
rndh4_3
beziehungsweise.
Irgendwelche Ideen, wie ich den Tag-Namen des durch "this" dargestellten Elements ermitteln kann?
javascript
jquery
BigPigVT
quelle
quelle
Antworten:
sollte sein
quelle
Sie könnten dies versuchen:
Weitere Informationen zu is () finden Sie in den Dokumenten .
quelle
nodeName
eine Zeichenfolge zurückgegeben wird, die je nach Browser in Großbuchstaben geschrieben ist oder nicht.is('*')
. Es wird wahrscheinlich nicht auf das OP antworten, aber es hat bei mir funktioniert, danke, @middus!Da ich diese Frage schon einmal gestellt habe und sie mir in meinem Fall nicht geholfen hat (ich hatte keine
this
, sondern eine jQuery-Selektorinstanz). Wennget()
Sie aufrufen , erhalten Sie das HTML-Element, mit dem Sie dasnodeName
oben erwähnte Element abrufen können .oder
quelle
Sie können es auch verwenden,
$(this).prop('tagName');
wenn Sie jQuery 1.6 oder höher verwenden.quelle
Ja. Sie können den folgenden Code verwenden:
quelle
Ich denke, Sie können das
nodeName
in jQuery nicht verwenden, da nodeName eine DOM-Eigenschaft ist und jQuery selbst weder einenodeName
Funktion noch eine Eigenschaft hat. Aber basierend auf dem Befragten, der das erste Mal über diesesnodeName
Zeug gesprochen hat, konnte ich das Problem auf folgende Weise lösen:HINWEIS:
this
Hier ist ein jQuery-Objekt.quelle
Da dies eine Frage ist, die Sie bei Google mit dem ersten Kind von jquery tagname als Abfrage beantworten, werde ich ein weiteres Beispiel veröffentlichen:
Das jquery-Ergebnis ist ein (Groß-) Tagname: P.
quelle
Sie können den Namen des HTML-Element-Tags auf der gesamten Seite abrufen.
Du könntest benutzen:
quelle
Hinweis: Ersetzen Sie diesen durch Ihren Selektor (h1, h3 oder ...)
quelle
Ich habe es gerade erst für eine andere Ausgabe geschrieben und dachte, es könnte auch einem von euch helfen.
Verwendung:
onclick="_DOM_Trackr(this);"
Parameter:
Quellcode:
quelle
html > body > div#coreApp > div#productpage > div#productpage-wrapper > div > div > div > div > div#pthumb12 > form#thumb_uploader_src > input
$('*').each(function(_i,_e){$(_e).attr('title',_DOM_Trackr(_e,true));});
Der beste Weg, um Ihr Problem zu beheben, ist das Ersetzen
$(this).attr("tag")
durch entwederthis.nodeName.toLowerCase()
oderthis.tagName.toLowerCase()
.Beide liefern genau das gleiche Ergebnis!
quelle
Betrachten Sie die schnelle FILTER- Methode:
kehrt zurück:
so:
quelle
Tun Sie stattdessen einfach:
quelle