В чем разница между пространством jQuery и селекторами? - PullRequest
11 голосов
/ 02 августа 2009

В чем разница между селекторами space и > ? И, возможно, связано, как я могу искать что-то, что является прямым потомком чего-то другого, а не опускаться вниз по линии потомка?

Ответы [ 4 ]

29 голосов
/ 02 августа 2009

Для:

<ul>
  <li>Item 1</li>
  <li>Item 2
    <ul>
      <li>Item 2.1</li>
      <li>Item 2.2</li>
    </ul>
  </li>
  <li>Item 3</li>
</ul>

Например

$("ul > li").addClass("blah");

добавляет класс "бла" к 1 2 и 3, тогда как:

$("ul li").addClass("blah");

добавить класс "бла" к каждому элементу списка.

Я не уверен, что вы имеете в виду с <и? операторы. </p>

10 голосов
/ 12 августа 2009

В CSS > означает «прямой дочерний элемент»: выбираются только узлы, которые являются прямыми дочерними элементами.

Хотя пробел означает «любой потомок»: могут быть выбраны прямые дети и дети этих детей.

Ставлю, что jQuery использует то же соглашение.

2 голосов
/ 07 января 2010

посмотрите на это ..

$(".testit > a") //match the first <a> tag below
$(".testit a") // matches all <a> tag below

<p class="testit">
  <a href="#">All the rules will match this</a>
  <span>
    <a href="#">second rule can only select this</a>
  </span>
</p>
2 голосов
/ 30 ноября 2009

Как уже упоминалось, пробел выберет любого потомка, тогда как > выберет только непосредственных потомков. Если вы хотите выбрать только внуков или правнуков, то вы можете использовать это:

#foo > * > * > .bar

(все элементы с классом "bar", которые являются правнуками элемента с идентификатором "foo")

...