Подсчитайте <li>с в <ul>с помощью jQuery - PullRequest
4 голосов
/ 24 июня 2009

У меня есть простой список, подобный этому:

<ul id="cyclelist">
   <li>Item 1</li>
   <li>Item 2</li>
   <li>Item 3</li>
</ul>

и я использую jQuery для циклического перемещения по списку. Первая проблема заключается в поиске, если список имеет более одного элемента для начала. Я ожидаю, что что-то вроде этого будет работать:

var $list = $('#cyclelist');

if ($list.length > 1) {
  ...
}

Но длина всегда возвращает 1. Есть ли лучший способ найти длину списка с помощью jQuery? Или я ошибаюсь?

Ответы [ 4 ]

13 голосов
/ 24 июня 2009

Попробуйте $('#cyclelist li').length

Проблема в том, что $ ('#cyclelist') имеет только один элемент - неупорядоченный список в целом. Если вы хотите узнать количество элементов списка в вашем неупорядоченном списке, вы можете просто добавить дополнительный селектор li.

2 голосов
/ 24 июня 2009

Ваш селектор выбирает элемент dom с идентификатором «cyclist», который является отдельным элементом (ul с этим идентификатором). Что вы хотели бы сделать, это выбрать элементы li, прикрепленные к этому ul. Для этого вы можете сделать (как уже упоминалось)

    $('#cyclelist li')
2 голосов
/ 24 июня 2009
var $list = $('#cyclelist li');

alert($list.length);

Проще говоря: вы получили количество UL, соответствующих этому селектору.

1 голос
/ 24 июня 2009
$('#cyclelist')

использует селектор CSS для элемента с id = "cyclist" и поэтому возвращает одну ссылку на элемент / объект, так что это правильно; -)

То, что вы, вероятно, имели в виду, было

$('#cyclelist li')

чтобы вернуть элементы списка в пределах именованного элемента.

Более jQuery-esque способ перебора наборов элементов - использовать каждый, c.f. http://docs.jquery.com/Core/each

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