<p data-foo="bar">
Как вы можете сделать эквивалент
document.querySelectorAll('[data-foo]')
где querySelectorAll это не доступно ?
Мне нужно собственное решение, которое работает хотя бы в IE7. Меня не волнует IE6.
javascript
dom
ryanve
источник
источник
querySelectorAll
недоступно?note - I don't care all IE
Ответы:
Вы можете написать функцию, которая запускает getElementsByTagName ('*') и возвращает только те элементы с атрибутом «data-foo»:
Затем,
источник
!= null
это идеальный способ (лучше , чем мой комментарий выше) , потому что в старом IE это возможно для GetAttribute возвращать значение которогоtypeof
является'number'
document.getElementsByTagName('*')
вместоdocument.all
?hasAttribute
вместоgetAttribute() !== null
, поскольку вы хотите проверить только наличие, а не его значение?использование
или
найти элементы по атрибуту. Теперь он поддерживается во всех соответствующих браузерах (даже IE8): http://caniuse.com/#search=queryselector
источник
Я немного поигрался и пришел к вот этому грубому решению:
Использование довольно простое и работает даже в IE8:
http://fiddle.jshell.net/9xaxf6jr/
Но я рекомендую использовать
querySelector
/All
для этого (и поддерживать старые браузеры используют polyfill ):источник
Попробуйте это работает
document.querySelector ( '[атрибут = "значение"]')
пример :
источник
Это тоже работает:
Так:
источник
document.querySelector('[data-foo="bar"]');
Попробуйте это - я немного изменил приведенные выше ответы:
Затем,
источник
Немного модификация на @kevinfahy «s ответ , чтобы получать атрибут , значение , если это необходимо:
источник
Не использовать в браузере
В браузере используйте
document.querySelect('[attribute-name]')
.Но если вы проводите модульное тестирование и у вашего смоделированного dom есть нестабильная реализация querySelector, это поможет.
Это ответ @kevinfahy, только что немного урезанный, чтобы быть немного с функциями жирных стрелок ES6 и путем преобразования HtmlCollection в массив, возможно, ценой удобочитаемости.
Так что он будет работать только с транспилером ES6. Кроме того, я не уверен, насколько он будет производительным с большим количеством элементов.
А вот вариант, который получит атрибут с определенным значением
источник