4

我正在尝试计算我的 div 中有多少类 .test 元素。我有

<div id='testDiv'>ddd 
   <div class='test'> 111<div> another div </div></div>
   <div class='test'> 222</div>
   <div class='test'> 333</div>
   more...
</div>

我的 jQuery:

if($('#testDiv.test').length>5){
   alert('haha');
}

我似乎无法通过类名测试获得正确数量的 div。

4

6 回答 6

5

更改选择器,如下所示:

$('#testDiv .test').length

放一个space介于#testDiv和之间.test

$('#testDiv .test')会找出#testDiv谁有的直子class=test

完整代码:

if( $('#testDiv .test').length > 5 ){
   alert('haha');
}

笔记

$('#testDiv.test')id=testDiv表示您正在选择一些同时具有和class=testlike的元素<div id="testDiv" class="test"></div>

于 2012-09-10T16:40:39.570 回答
4

尝试在#testDiv和之间添加一个空格.test

$('#testDiv .test').length

你所拥有的如下所示,

$('#testDiv.test') //- element with ID testDiv and class test  
//<div id="testDiv" class="test">...</div>
于 2012-09-10T16:40:45.950 回答
3

您正在搜索 ID 为testDiv AND类的元素test,例如

<div id="testDiv" class="test">

你需要

$('#testDiv .test")
           ^--- note the space

反而。有了这个空间,所有具有类“test”的节点都是 id 为 testDiv 的节点的子节点。

于 2012-09-10T16:41:55.890 回答
1

尝试:

$('#testDiv').children('.test').length;
于 2012-09-10T16:41:15.227 回答
1
  • $('#testDiv .test")这将计算所有直接后代 - 如果它是孩子的​​孩子,您将不计算它。
  • $('#testDiv').find('.test')或者干脆$('#testDiv, .test')找到所有后代。
于 2012-09-10T17:02:11.343 回答
1

嗨,我正在写 3 个案例:

方法 1: 如果 .test 是 #testdiv 的直接子级

在这你应该使用.children

例如:

$("#testdiv").children(".test")

这将为您提供具有“test”类的元素数组。在 javascript 中,我们使用 length 属性来查找数组的大小。所以 $("#testdiv").children(".test").length 会做你的工作。

方法 2: 类似地,要在您的 #testdiv 中查找所有具有“测试”类的元素,您可以使用.find回调。当您不知道“.test”元素的嵌套级别时,应该使用这种方法,因为它不是优化的方式。例如: $("#testdiv").find(".test") 这将为您提供元素数组。使用相同的 .length 来查找数组的大小。

方法3: 您也可以尝试使用:

$("#testdiv .test")

这将与方法:2 相同,但优化程度较低。

您的错误: 您尝试使用以下语法

$("#testdiv.test")

此选择器为您提供类为“test”和 id 为“testdiv”的元素。

谢谢

于 2012-09-10T17:14:44.113 回答