Obtenir tous les attributs d'un élément à l'aide de jQuery
Je suis en train de passer par l'intermédiaire d'un élément et obtenir tous les attributs de l'élément de sortie, par exemple, une balise peut avoir 3 ou plusieurs attributs, inconnu pour moi et j'ai besoin d'obtenir les noms et les valeurs de ces attributs. Je pensais à quelque chose le long des lignes de:
$(this).attr().each(function(index, element) {
var name = $(this).name;
var value = $(this).value;
//Do something with name and value...
});
Quelqu'un pourrait-il me dire si cela est encore possible, et si oui, quelle était la bonne syntaxe serait?
Vous devez vous connecter pour publier un commentaire.
La
attributes
propriété contient tous les:Ce que vous pouvez également faire est d'étendre
.attr
de sorte que vous pouvez l'appeler comme.attr()
pour obtenir un objet ordinaire de tous les attributs:Utilisation:
$().attr()
attributes
collection contient tous les attributs possibles dans les vieux IE, et pas seulement celles qui ont été spécifiées dans le code HTML. Vous pouvez contourner ce par filtrage de la liste des attributs à l'aide de chacun des attributsspecified
de la propriété..attr()
méthode. C'est étrange jQuery ne pas l'inclure.this[0].attributes
?attributes
n'est pas un Tableau mais... en Chrome d'au moins c'est unNamedNodeMap
, qui est un Objet.attributes
liste avec lesspecified
de la propriété.Voici un aperçu des nombreuses façons qui peuvent être faites, pour ma propre référence, aussi bien que les tiennes 🙂 Le retour des fonctions de hachage de noms d'attributs et de leurs valeurs.
Vanille JS:
Vanille JS avec le Tableau.réduire
Fonctionne pour les navigateurs supportant ES 5.1 (2011). Nécessite IE9+, ne fonctionne pas avec IE8.
jQuery
Cette fonction s'attend à un objet jQuery, pas un élément du DOM.
Trait de soulignement
Fonctionne également pour les lodash.
lodash
Est encore plus concis que le trait de Soulignement version, mais ne fonctionne que pour les lodash, pas de trait de Soulignement. Nécessite IE9+, est buggé dans IE8. Bravo à @AlJey pour que l'on.
Page de Test
À la JS Bin, il y a un vivre une page de test sur l'ensemble de ces fonctions. Le test comprend des attributs booléens (
hidden
) et il a énuméré les attributs (contenteditable=""
).avec LoDash vous pourriez simplement faire ceci:
Un débogage de script (jquery solution basée sur la réponse ci-dessus par hashchange)
À l'aide de la fonction javascript il est plus facile d'obtenir tous les attributs d'un élément dans NamedArrayFormat.
JS:
HTML:
Solution Simple par Underscore.js
Par exemple: Obtenir tous les liens de texte qui les parents ont de la classe
someClass
Travail de violon
Ma suggestion:
var a = $(el).attrs();