Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

JavaScript. Как обратиться к подклассу определенного класса?

Lancy Studio Знаток (256), закрыт 4 года назад
Здравствуйте. Помогите решить выше поставленную задачу. Искал в Google, но везде jQuery выдает.

Пример :
div с классом "parent1" содержит в себе класс "child"
div с классом "parent2" содержит в себе класс "child"

нужно обратиться к классу child класса parent2. Писать дополнительные классы? На мой взгляд не очень адекватно... Как и присваивать классам индексы, то есть у меня могут эти классы ("child") дополняться, было два, стало три, и придётся в таком случае менять все индексы... Что очень уж неудобно. Что делать?

Thak you!
Лучший ответ
no name Мыслитель (6058) 4 года назад
document.querySelectorAll('.parent2 .child')
no nameМыслитель (6058) 4 года назад
Дополняя ответ, заметил, что снизу предлагали вариант с >.

Да, он вполне имеет место быть, но! Не стоит забывать, что этот вариант всё-таки работает медленнее, и в целом в данной ситуации бессмысленен.

Конечно, разницу в скорости работы селлекторов в данной ситуации будет не заметить, но стоит учитывать, что некоторые селлекторы CSS медленнее. Если конкретно, то в таком порядке (сверху - самые эффективные и быстрее, снизу - самые медленные):

1. ID, e.g. #header
2. Class, e.g. .promo
3. Type, e.g. div
4. Adjacent sibling, e.g. h2 + p
5. Child, e.g. li > ul
6. Descendant, e.g. ul a
7. Universal, i.e. *
8. Attribute, e.g. [type="text"]
9. Pseudo-classes/-elements, e.g. a:hover
no name Мыслитель (6058) Подробнее можно почитать здесь: css-tricks.com/efficiently-rendering-css/ (справка для потомков)
Остальные ответы
Elepsis Eclipse Оракул (64086) 4 года назад
В дополнение → https://webref.ru/css#selectors
Все они могут свободно использоваться в querySelector...
1 2 Просветленный (39148) 4 года назад
document.querySelectorAll('.parent2 > .child')
Или document.querySelector('.parent2 > .child') если .child один.

Есть более старый селектор .getElementsByClassName(), подобная конструкция на нем будет выглядеть так: document.getElementsByClassName('parent2')[0].getElementsByClassName('child')[0]
Elepsis EclipseОракул (64086) 4 года назад
А зачем его использовать, если старый?) Уже можно начать про него забывать.
Похожие вопросы