подсчитать непосредственные дочерние элементы, используя jquery с переменной - PullRequest
2 голосов
/ 20 декабря 2011

Этот вопрос похож на этот (но не точный): Подсчитать непосредственные дочерние элементы div, используя jQuery

У меня есть несколько списков, которые представляют рождественские подарки для разных людей.Как пример, это список подарков для одного человека.Обратите внимание, что новые люди могут быть добавлены

<ul id = "presents">
<li id = "person1" >
<ul id = "presentsforperson1">
<li id = "present1" >
<ul id = "present1info">
<li> Present 1 </li>
<li> A New Pair of Shoes </li>
<li> $19.99 </li>
</ul>
</li>
<!-- More presents for person 1 can be added here dynamically-->
</ul>
</li>
<!-- More people can be added here -->
</ul>

В отличие от опубликованного вопроса, у меня есть объект presentforperson1 в переменной с именем drop (droppable).Мне было интересно, каков правильный синтаксис для определения количества подарков, которые человек 1 имеет (в данном случае 1) с этой переменной?

Это то, что я пробовал до сих пор:

 var numberofPresents = $(drop + "ul > li").length; //drop holds li#presentsforperson1 .droppable
 var numberofPresents = $(dropid + "ul > li").length; //dropID is $(drop).attr("id");

Ответы [ 3 ]

2 голосов
/ 20 декабря 2011

Если идентификатор человека является идентификатором ul, содержащим их подарки, то просто:

$('#personId > li').length

сделает это.

Обновление

Или, если идентификатор находится в переменной:

$('#' + personId).children('ul').length

Очевидно, что вы можете добавить дочерний селектор к строке селектора, например:

$('#' + personId + ' > ul').length

Но лично я нахожу версию с вызовом .children более читабельной.

1 голос
/ 20 декабря 2011

Предполагая, что ваша переменная drop ссылается на объект jQuery:

var quantity = drop.children().length;

Если он имеет элемент DOM необработанного типа:

var quantity = $(drop).children().length;

Если это простострока с идентификатором, без синтаксиса селектора идентификатора:

var quantity = $('#' + dropid).children().length;

Или вы можете сделать конкатенацию, как вы были:

var quantity = $('#' + dropid + " > li").length;
0 голосов
/ 20 декабря 2011

Вы можете сделать что-то следующим образом (укажите свои li s, которые представляют настоящий класс css):

var presents = $('ul[id="person1"]').children('li.presentClass');

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