Разница между селекторами jQuery "потомком предка" и "родительским" дочерним элементом "
Следующие две формы селекторов jQuery, похоже, делают одно и то же:
- $( "div > ul.posts" )
- $( "div ul.posts" )
который должен выбрать все "ul" элементы класса "posts" под элементами "div".
Есть ли разница?
Ответы
Ответ 1
Относительно $("div > ul.posts")
будут выбраны только прямые потомки DIV
.
<div>
<ul class="posts"> <!--SELECTED-->
<li>List Item</li>
<ul class="posts"> <!--NOT SELECTED-->
<li>Sub list item</li>
</ul>
</ul>
<fieldset>
<ul class="posts"> <!--NOT SELECTED-->
<li>List item</li>
</ul>
</fieldset>
<ul class="posts"> <!--SELECTED-->
<li>List item</li>
</ul>
</div>
while $("div ul.posts")
выберет все потомки, соответствующие критериям. Таким образом, будут выбраны все и любые ul.posts
, независимо от того, какой уровень их вложенности находится где-то вдоль цепочки, они находятся в пределах DIV
.
Ответ 2
Первый выбирает только ul.posts, parentNode которого является div.
Второй вариант также будет выбирать:
<div>
<blockquote>
<ul class="posts"></ul>
</blockquote>
</div>
Ответ 3
О. Таким образом, "предки-потомки" относятся ко всем указанным элементам под родителем, независимо от того, насколько глубоко вложенные
Пока "родительский ребенок" относится только к первому указанному элементу, даже если он встречается снова где-то еще под родительским
Ответ 4
Я просто добавляю здесь знакомую ссылку. Я понимаю это спустя годы после первоначального вопроса, но он был на первой странице в Google, и, возможно, это поможет кому-то другому.
Подумайте о реальных предках и родителях. Родитель и ребенок всегда разделены на одно поколение, но предки и их потомки могут быть сотнями лет друг от друга. Символ >
помогает символизировать прямую связь между родителем и дочерним элементом.