Estoy tratando de pasar por un elemento y obtener todos los atributos de ese elemento para generarlos, por ejemplo, una etiqueta puede tener 3 o más atributos, desconocidos para mí y necesito obtener los nombres y valores de estos atributos. Estaba pensando en algo como:
$(this).attr().each(function(index, element) {
var name = $(this).name;
var value = $(this).value;
//Do something with name and value...
});
¿Alguien podría decirme si esto es posible y, de ser así, cuál sería la sintaxis correcta?
javascript
jquery
attributes
Styphon
fuente
fuente
$().attr()
attributes
colección contiene todos los atributos posibles en IE anteriores, no solo los que se han especificado en el HTML. Puede solucionar esto filtrando la lista de atributos utilizando cadaspecified
propiedad de atributos ..attr()
método jQuery . Es extraño que jQuery no lo incluya.this[0].attributes
?attributes
Sin embargo, no es una matriz ... en Chrome, al menos, es unNamedNodeMap
, que es un objeto.Aquí hay una descripción general de las muchas formas en que se puede hacer, para mi propia referencia y la tuya :) Las funciones devuelven un hash de nombres de atributos y sus valores.
Vanilla JS :
Vanilla JS con Array.reduce
Funciona para navegadores compatibles con ES 5.1 (2011). Requiere IE9 +, no funciona en IE8.
jQuery
Esta función espera un objeto jQuery, no un elemento DOM.
Guion bajo
También funciona para lodash.
lodash
Es aún más conciso que la versión Underscore, pero solo funciona para lodash, no para Underscore. Requiere IE9 +, tiene errores en IE8. Felicitaciones a @AlJey por eso .
Página de prueba
En JS Bin, hay una página de prueba en vivo que cubre todas estas funciones. La prueba incluye atributos booleanos (
hidden
) y atributos enumerados (contenteditable=""
).fuente
Un script de depuración (solución jquery basada en la respuesta anterior por hashchange)
fuente
con LoDash simplemente podrías hacer esto:
fuente
Usando la función javascript es más fácil obtener todos los atributos de un elemento en NamedArrayFormat.
fuente
Solución simple por Underscore.js
Por ejemplo: Obtenga todos los enlaces de texto de los padres de los alumnos que tienen clase
someClass
Violín de trabajo
fuente
Mi sugerencia:
var a = $ (el) .attrs ();
fuente