При использовании querySelectorAll есть ли способ сослаться на непосредственных дочерних элементов узла контекста без использования идентификаторов?

Скажем, у меня есть структура HTML, например

<div id="a">
  <div id="b">
    <div id="c"></div>
  </div>
</div>

Чтобы сделать запрос для дочерних элементов "a" с помощью querySelectorAll, я могу сделать что-то вроде

//Get "b", but not "c"
document.querySelectorAll('#a > div')

Мой вопрос:возможно ли сделать это без идентификатора, напрямую ссылаясь на узел? Я пытался сделать

var a_div = document.getElementById('a')
a_div.querySelectorAll('> div') //<-- error here

но я получаю сообщение об ошибке, говорящее мне, что селектор, который я использовал, недействителен.


И если кому-то интересно, мой реальный вариант использования будет чем-то более сложным, например «>.foo.bar.baz», поэтому я бы предпочел избежать ручного обхода DOM. В настоящее время я добавляю временный идентификатор в корневой div, но это выглядит как уродливый хак...

6
задан hugomg 11 July 2012 в 20:19
поделиться