Estou tentando passar por um elemento e obter todos os atributos desse elemento para produzi-los, por exemplo, uma tag pode ter 3 ou mais atributos, desconhecidos para mim e preciso obter os nomes e valores desses atributos. Eu estava pensando em algo como:
$(this).attr().each(function(index, element) {
var name = $(this).name;
var value = $(this).value;
//Do something with name and value...
});
Alguém poderia me dizer se isso é possível e, em caso afirmativo, qual seria a sintaxe correta?
javascript
jquery
attributes
Styphon
fonte
fonte
$().attr()
attributes
coleção contém todos os atributos possíveis no IE mais antigo, não apenas aqueles que foram especificados no HTML. Você pode contornar isso filtrando a lista de atributos usando cadaspecified
propriedade de atributos ..attr()
método jQuery . É estranho que o jQuery não o inclua.this[0].attributes
?attributes
embora não seja uma matriz ... no Chrome, pelo menos é umaNamedNodeMap
, que é um objeto.Aqui está uma visão geral das muitas maneiras que podem ser feitas, para minha própria referência e também para a sua :) As funções retornam um hash de nomes de atributos e seus valores.
JS de baunilha :
JS de baunilha com Array.reduce
Funciona para navegadores que suportam o ES 5.1 (2011). Requer o IE9 +, não funciona no IE8.
jQuery
Esta função espera um objeto jQuery, não um elemento DOM.
Sublinhado
Também funciona para lodash.
lodash
É ainda mais conciso que a versão Underscore, mas funciona apenas para lodash, não para Underscore. Requer o IE9 +, é um bug no IE8. Parabéns ao @AlJey por esse .
Página de teste
Na JS Bin, há uma página de teste ao vivo cobrindo todas essas funções. O teste inclui atributos booleanos (
hidden
) e atributos enumerados (contenteditable=""
).fonte
Um script de depuração (solução jquery baseada na resposta acima por hashchange)
fonte
Com o LoDash, você pode simplesmente fazer o seguinte:
fonte
Usando a função javascript, é mais fácil obter todos os atributos de um elemento no NamedArrayFormat.
fonte
Solução simples por Underscore.js
Por exemplo: obter todos os links com texto de quem os pais têm aula
someClass
Violino de trabalho
fonte
Minha sugestão:
var a = $ (el). attrs ();
fonte