J'essaie de parcourir un élément et d'obtenir tous les attributs de cet élément pour les afficher, par exemple une balise peut avoir 3 attributs ou plus, inconnus de moi et j'ai besoin d'obtenir les noms et les valeurs de ces attributs. Je pensais à quelque chose du genre:
$(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 même possible et, dans l'affirmative, quelle serait la syntaxe correcte?
javascript
jquery
attributes
Styphon
la source
la source
$().attr()
attributes
collection contient tous les attributs possibles dans l'ancien IE, pas seulement ceux qui ont été spécifiés dans le HTML. Vous pouvez contourner ce problème en filtrant la liste des attributs à l'aide de chaquespecified
propriété d' attributs ..attr()
méthode jQuery . C'est étrange que jQuery ne l'inclut pas.this[0].attributes
?attributes
n'est pas un tableau cependant ... dans Chrome au moins c'est unNamedNodeMap
, qui est un objet.Voici un aperçu des nombreuses façons qui peuvent être faites, pour ma propre référence ainsi que la vôtre :) Les fonctions renvoient un hachage des noms d'attributs et de leurs valeurs.
Vanille JS :
Vanilla JS avec Array.reduce
Fonctionne pour les navigateurs prenant en charge ES 5.1 (2011). Nécessite IE9 +, ne fonctionne pas dans IE8.
jQuery
Cette fonction attend un objet jQuery, pas un élément DOM.
Souligner
Fonctionne également pour le lodash.
lodash
Est encore plus concis que la version Underscore, mais ne fonctionne que pour lodash, pas pour Underscore. Nécessite IE9 +, est bogué dans IE8. Félicitations à @AlJey pour celui-là .
Page de test
Chez JS Bin, il existe une page de test en direct couvrant toutes ces fonctions. Le test comprend des attributs booléens (
hidden
) et des attributs énumérés (contenteditable=""
).la source
Un script de débogage (solution jquery basée sur la réponse ci-dessus par hashchange)
la source
avec LoDash, vous pouvez simplement faire ceci:
la source
En utilisant la fonction javascript, il est plus facile d'obtenir tous les attributs d'un élément dans NamedArrayFormat.
la source
Solution simple par Underscore.js
Par exemple: obtenez le texte de tous les liens dont les parents ont la classe
someClass
Violon de travail
la source
Ma suggestion:
var a = $ (el) .attrs ();
la source