<p data-foo="bar">
Como você pode fazer o equivalente a
document.querySelectorAll('[data-foo]')
onde querySelectorAll não está disponível ?
Eu preciso de uma solução nativa que funcione pelo menos no IE7. Eu não ligo para o IE6.
javascript
dom
ryanve
fonte
fonte
querySelectorAll
não está disponível?note - I don't care all IE
Respostas:
Você pode escrever uma função que execute getElementsByTagName ('*') e retorne apenas os elementos com o atributo "data-foo":
Então,
fonte
!= null
é a maneira ideal (melhor do que o meu comentário acima) porque no velho IE é possível para getAttribute para retornar um valor cujatypeof
é'number'
document.getElementsByTagName('*')
vez dedocument.all
?hasAttribute
e nãogetAttribute() !== null
, já que você deseja apenas verificar a existência e não o seu valor?Usar
ou
para encontrar elementos por atributo. Agora ele é suportado em todos os navegadores relevantes (mesmo no IE8): http://caniuse.com/#search=queryselector
fonte
Eu brinquei um pouco e acabei com esta solução grosseira:
O uso é bastante simples e funciona mesmo no IE8:
http://fiddle.jshell.net/9xaxf6jr/
Mas eu recomendo usar
querySelector
/All
para isso (e para suportar navegadores mais antigos, use um polyfill ):fonte
Tente isso funciona
document.querySelector ('[attribute = "value"]')
exemplo:
fonte
Isso também funciona:
Assim:
fonte
document.querySelector('[data-foo="bar"]');
Tente isso - alterei ligeiramente as respostas acima:
Então,
fonte
Uma pequena modificação na resposta de @kevinfahy , para permitir a obtenção do atributo por valor, se necessário:
fonte
Não use no navegador
No navegador, use
document.querySelect('[attribute-name]')
.Mas se você estiver testando a unidade e o seu Dom zombado tiver uma implementação flakey querySelector, isso funcionará.
Esta é a resposta de @ kevinfahy, reduzida para ser um pouco com as funções de seta gorda ES6 e convertendo o HtmlCollection em uma matriz, talvez com o custo de legibilidade.
Portanto, ele funcionará apenas com um transpiler ES6. Além disso, não tenho certeza de qual será o desempenho de muitos elementos.
E aqui está uma variante que obterá um atributo com um valor específico
fonte