Подскажите, пожалуйста, есть ли какой-нибудь DOM API, который ищет элемент с заданным именем атрибута и значением атрибута:
Что-то вроде:
doc.findElementByAttribute("myAttribute", "aValue");
javascript
dom
Майкл
источник
источник
Ответы:
Обновление: за последние несколько лет ландшафт резко изменился. Теперь вы можете надежно использовать
querySelector
иquerySelectorAll
см . Ответ Войтека о том, как это сделать.Теперь нет необходимости в зависимости от jQuery. Если вы используете jQuery, отлично ... если нет, вам больше не нужно полагаться на него только для выбора элементов по атрибутам.
В ванильном javascript нет очень короткого способа сделать это, но есть несколько доступных решений.
Вы делаете что-то вроде этого, просматривая элементы и проверяя атрибут
Если библиотека типа jQuery является опцией, вы можете сделать это немного проще, например так:
Если значение не является допустимым идентификатором CSS (в нем есть пробелы или знаки пунктуации и т. Д.), Вам необходимо заключить в кавычки значение (они могут быть одинарными или двойными):
Вы можете также сделать
start-with
,ends-with
,contains
и т.д. ... Есть несколько вариантов для выбора атрибута .источник
Современные браузеры поддерживают нативный,
querySelectorAll
так что вы можете сделать:https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
Подробная информация о совместимости браузера:
Вы можете использовать jQuery для поддержки устаревших браузеров (IE9 и старше):
источник
SyntaxError: An invalid or illegal string was specified
'[data-foo="value"]'
Мы можем использовать селектор атрибута в DOM, используя
document.querySelector()
иdocument.querySelectorAll()
методы.для вас:
и с помощью
querySlectorAll()
:В
querySelector()
иquerySelectorAll()
методы мы можем выбрать объекты, как мы выбираем в «CSS».Подробнее о селекторах атрибутов «CSS» см. Https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors.
источник
ps если вы знаете точный тип элемента, вы добавляете третий параметр (т.е.
div, a, p ...etc...
):но сначала определим эту функцию:
ps обновлено за комментарии рекомендации.
источник
document.querySelectorAll('[data-foo="value"]');
как предложено @Wojtek Kruszewski на принятом awnser.Вот пример, Как искать изображения в документе по атрибуту src:
источник
Вы можете использовать getAttribute:
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
источник
p
элемент, не используяid
или каждыйp
в DOM (и тестовые атрибуты)Используйте селекторы запросов, примеры:
input[name]
Вводит элементы соname
свойством.[id|=view]
Элементы с идентификатором, которые начинаются сview-
.[class~=button]
Элементы сbutton
классом.источник