Você pode me dizer se existe alguma API DOM que procure por um elemento com determinado nome de atributo e valor de atributo:
Algo como:
doc.findElementByAttribute("myAttribute", "aValue");
javascript
dom
Michael
fonte
fonte
Respostas:
Atualização: Nos últimos anos, o cenário mudou drasticamente. Agora você pode usar com segurança
querySelector
equerySelectorAll
, consulte a resposta da Wojtek para saber como fazer isso.Não há necessidade de uma dependência do jQuery agora. Se você estiver usando jQuery, ótimo ... se não estiver, não precisará mais confiar apenas na seleção de elementos por atributos.
Não há uma maneira muito curta de fazer isso em javascript vanilla, mas existem algumas soluções disponíveis.
Você faz algo assim, percorrendo elementos e verificando o atributo
Se uma biblioteca como o jQuery for uma opção, você poderá fazê-lo um pouco mais fácil, assim:
Se o valor não for um identificador CSS válido (possui espaços ou pontuação, etc.), você precisará de aspas ao redor do valor (elas podem ser únicas ou duplas):
Você também pode fazer
start-with
,ends-with
,contains
, etc ... existem várias opções para o seletor de atributo .fonte
Navegadores modernos oferecem suporte nativo
querySelectorAll
para que você possa:https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
Detalhes sobre a compatibilidade do navegador:
Você pode usar o jQuery para oferecer suporte a navegadores obsoletos (IE9 e anteriores):
fonte
SyntaxError: An invalid or illegal string was specified
'[data-foo="value"]'
Podemos usar seletor de atributo no DOM usando
document.querySelector()
edocument.querySelectorAll()
métodos.para o seu:
e usando
querySlectorAll()
:Nos métodos
querySelector()
equerySelectorAll()
podemos selecionar objetos como selecionamos em "CSS".Mais sobre os seletores de atributos "CSS" em https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
fonte
ps se você souber o tipo exato de elemento, adicione o terceiro parâmetro (ou seja
div, a, p ...etc...
):mas, a princípio, defina esta função:
ps atualizado por recomendações de comentários.
fonte
document.querySelectorAll('[data-foo="value"]');
como proposto por @Wojtek Kruszewski no awnser aceito.Aqui está um exemplo, Como procurar imagens em um documento pelo atributo src:
fonte
você poderia usar getAttribute:
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
fonte
p
elemento sem o usoid
ou a cadap
no DOM (e atributos de teste)Use seletores de consulta, exemplos:
input[name]
Insere elementos comname
propriedade.[id|=view]
Elementos com ID que começam comview-
.[class~=button]
Elementos com abutton
classe.fonte