Ich versuche, ein Element durchzugehen und alle Attribute dieses Elements zur Ausgabe zu bringen. Beispielsweise kann ein Tag drei oder mehr Attribute haben, die mir unbekannt sind, und ich muss die Namen und Werte dieser Attribute abrufen. Ich dachte etwas in der Art von:
$(this).attr().each(function(index, element) {
var name = $(this).name;
var value = $(this).value;
//Do something with name and value...
});
Kann mir jemand sagen, ob dies überhaupt möglich ist und wenn ja, wie die richtige Syntax lauten würde?
javascript
jquery
attributes
Styphon
quelle
quelle
$().attr()
attributes
Sammlung enthält alle möglichen Attribute im älteren IE, nicht nur diejenigen, die im HTML angegeben wurden. Sie können dies umgehen, indem Sie die Attributliste mithilfe der einzelnen Attributeigenschaften filternspecified
..attr()
Methode. Es ist seltsam, dass jQuery es nicht enthält.this[0].attributes
?attributes
ist allerdings kein Array ... in Chrome ist es zumindest einNamedNodeMap
, was ein Objekt ist.Hier ist eine Übersicht über die vielen Möglichkeiten, die sowohl für meine als auch für Ihre Referenz verwendet werden können :) Die Funktionen geben einen Hash von Attributnamen und deren Werten zurück.
Vanilla JS :
Vanilla JS mit Array.reduce
Funktioniert für Browser, die ES 5.1 (2011) unterstützen. Benötigt IE9 +, funktioniert nicht in IE8.
jQuery
Diese Funktion erwartet ein jQuery-Objekt, kein DOM-Element.
Unterstreichen
Funktioniert auch für lodash.
lodash
Ist noch prägnanter als die Underscore-Version, funktioniert aber nur für lodash, nicht für Underscore. Benötigt IE9 +, ist in IE8 fehlerhaft. Ein großes Lob an @AlJey für diesen einen .
Testseite
Bei JS Bin gibt es eine Live-Testseite, die alle diese Funktionen abdeckt. Der Test enthält boolesche Attribute (
hidden
) und aufgezählte Attribute (contenteditable=""
).quelle
Ein Debugging-Skript (jquery-Lösung basierend auf der obigen Antwort von hashchange)
quelle
Mit LoDash können Sie dies einfach tun:
quelle
Mit der Javascript-Funktion ist es einfacher, alle Attribute eines Elements in NamedArrayFormat abzurufen.
quelle
Einfache Lösung von Underscore.js
Zum Beispiel: Holen Sie sich alle Links Text, dessen Eltern Klasse haben
someClass
Geige arbeiten
quelle
Mein Vorschlag:
var a = $ (el) .attrs ();
quelle