使用带有变量的jquery计算直接子元素

count immediate child elements using jquery with a variable

本文关键字:计算 元素 jquery 变量      更新时间:2023-09-26

这个问题与这个问题类似(但不准确):使用jQuery计算div的直接子元素

我有一堆清单,代表给不同人的圣诞礼物。举个例子,这是给一个人的礼物清单。注意可以添加新人

<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>

与张贴的问题不同,我将对象presentsforperson1放在一个名为drop(可丢弃)的变量中。我想知道用这个变量找到person 1(在这种情况下是1)的礼物数量的正确语法是什么?

这是我到目前为止所尝试的:

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

如果这个人的id是包含他们礼物的ul的id,那么只需:

$('#personId > li').length

可以。

或者如果id在变量中:

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

显然可以将子选择器附加到选择器字符串中,例如:

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

但是我个人觉得带有。children调用的版本更容易读。

假设你的drop变量引用了一个jQuery对象:

var quantity = drop.children().length;

如果它有原始DOM元素:

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

如果它只是一个带ID的字符串,没有ID选择器语法:

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

或者您可以像下面这样进行连接:

var quantity = $('#' + dropid + " > li").length;

你可以这样做(给你的li s代表一个css类):

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