Есть ли способ, чтобы querySelectorAll осуществлял поиск только дочерних элементов, а не всех потомков? - PullRequest
1 голос
/ 08 апреля 2011

Например, если у меня есть фрагмент документа:

<div> <!-- I have a reference to this: "outerDiv". -->
  <p> <!-- This is the <p> I want to select. -->
    <div>
      <p> <!-- I don't want to select this <p>. --> </p>
    </div>
  </p>
</div>

(Это гипотетический документ. HTML-парсеры фактически не будут создавать DOM, который выглядит следующим образом.)

и ссылка на самый внешний элемент <div>, Я бы хотел как-то использовать outerDiv.querySelectorAll('p') для выбора только элементов <p>, которые являются прямыми дочерними элементами внешнего <div>.

Я не могу использовать outerDiv.childNodes и искать элементы <p>, потому что у меня фактически есть селектор, который намного длиннее "p" (например, он может выглядеть как "p > a > b"). Я также не могу контролировать HTML и не могу использовать jQuery или другие библиотеки JavaScript.

Также недостаточно добавить "div > " к селектору и применить его от outerDiv.parentNode, поскольку внутренний <p> также соответствует "div > p".

Есть ли чистый способ сделать это, не разбирая CSS-селектор самостоятельно, слишком много?

1 Ответ

1 голос
/ 08 апреля 2011

Можете ли вы использовать body > div > p или что-то, что находится за пределами внешнего div?

...