JQuery селектор, синтаксис или ошибка? - PullRequest
0 голосов
/ 06 января 2011

Это странно, у меня такая разметка

<div id='div1'>
  <ul id='ul1'>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
  <div id='div2'>
    <ul id='ul2'>
      <li>4</li>
      <li>5</li>
      <li>6</li>
    </ul>
  </div>
</div>

в jquery У меня есть такой селектор:

var el = $('#div2');
var liList = el.children('ul:first > li');

Это должно вернуть второй набор li, но он возвращает первый набор. Но если я сделаю это:

var el = $('#div2');
var liList = el.children('ul:first').children('li');

Возвращает первый набор. Есть идеи, что происходит?

Это заставило меня сделать двойной дубль, потому что 1-й набор лив даже не является детьми div2

Я, очевидно, могу изменить свой код на последний, но это ошибка или я просто неправильно пишу свой селектор?

UPDATE:
Я запускал jquery 1.4.1, и использование jsfiddle, как было предложено ниже, показало разные результаты с 1.4.2 (ближайший вариант к моей конфигурации) и 1.4.4. Похоже, что частично я написал неправильный селектор, как указано в Rocket, и команда jquery исправила ошибку, которая была в 1.4.1. :)

Должен любить StackOverflow:)

Ответы [ 2 ]

1 голос
/ 06 января 2011

.children() возвращает «непосредственные дети».ul2 и li являются дочерними элементами div2, но ТОЛЬКО ul2 является «непосредственным ребенком».Чтобы получить все li с, вам нужно использовать второе.

li являются «непосредственными детьми» их соответствующих ul.

Я надеюсь, что это делаетsence.

var el = $('#div2');
var ul2 = el.children('ul:first > li'); // retuns ul2, because it's an immediate child
                                       // the '> li' doesn't do anything
var liList = ul2.children('li');  // this will return all of ul2's lis

jsFiddle

0 голосов
/ 06 января 2011

Это как-то связано с тем, что DIV2 находится внутри DIV1?

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