Как я могу выбрать n-го ребенка, не зная родительского элемента? - PullRequest
7 голосов
/ 16 ноября 2010

Я не могу найти способ выбора n-го, последнего или первого элемента в тех случаях, когда я не знаю родительский элемент. nth-child существует, но только для детей, например:

<div>
   <p>One</p>
   <p>Two</p>
</div>

p:last-child выбирает абзац «Два», а p:first-child выбирает абзац «Один». Но как насчет того, когда у меня есть динамический код, и я понятия не имею, что такое родительское имя или даже что на самом деле является родителем (может быть, div, span, anchor, ul и т. Д.)?

Например:

<youdontknowwhat!>
   <p class="select-me">One</p>
   <p class="select-me">Two</p>
</youdontknowwhat!>

Как мне выбрать второй абзац здесь? (Я не могу выбрать youdontknowwhat!, так как я действительно не знаю, что это за элемент (это просто гипотетическое имя).

Почему существуют селекторы first-child, last-child и nth-child и NO :first, :last, :nth (например, .select-me:first)?

Ответы [ 2 ]

27 голосов
/ 16 ноября 2010

Как :first будет отличаться от :first-child? Каждый элемент HTML является потомком какого-либо другого элемента в DOM, кроме <html>, который является корневым элементом. - BoltClock

Это было бы, так как вы не знаете родительский элемент. - fomicz

Вам не нужно знать родительский элемент, чтобы :first-child или :nth-child() работали. Они просто будут работать , даже если вы не укажете родительский элемент.

Следующий селектор гарантированно соответствует любому подходящему элементу .select-me независимо от того, что является его родительским элементом:

.select-me:nth-child(2)
4 голосов
/ 16 ноября 2010
*  p:nth-child(2)

конечно лучше, если вы можете указать родительский селектор (из соображений производительности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...