检查所有项目是否具有相同的类别

时间:2011-09-20 12:22:53

标签: jquery each

我构建了一个常见问题页面,其中包含隐藏和显示每个问题下方内容的选项。 我有一个“全部展开”功能,让用户可以显示所有问题。 当问题被扩展时,它会得到一个“被选中”的类。

当我扩展所有问题(LI)时,我试图更改“全部展开”状态。

如何检查所有LI是否同时“选择”了CLASS?

我使用EACH方法获取LI及其CLASS。

提前致谢

7 个答案:

答案 0 :(得分:29)

您可以使用selected类对所有列表项计算列表项:

if ($("#questions li.selected").length == $("#questions li").length) {
    // all list items are selected
}

#questions是包含您的列表的元素,当然它可能在您的代码中有所不同,但您应该明白这一点。

答案 1 :(得分:10)

$("li:not(.selected)").length

会为您提供没有“已选定”类的<li>个数。如果这个数字为零,你可以运行你的逻辑。

答案 2 :(得分:8)

选择所有列表项,过滤掉属于某个类的项目,然后确定是否还有剩余项:

if($("li").not(".className").length > 0 ) {
    //code
}

答案 3 :(得分:3)

您可以将li元素的数量与“已选择”类的li元素数量进行比较。如果这些数字相同,则所有li元素都具有该类:

if($("li").length == $("li.selected").length) {
   //All li elements have class selected
}

您可以随时执行此操作,但不必进入each循环。

答案 4 :(得分:2)

或者您可以使用size()

尝试此操作
if( $("li.success").size() == $("li").size() ){
    //return true
}

答案 5 :(得分:0)

我不确定该问题,但检查jQuery对象是否有类,使用.hasClass()

答案 6 :(得分:0)

当我向你提供正确的答案时,你想在点击ShowAll按钮时将课程selected设置为所有li元素吗?

您无需在所有li元素上进行迭代。

只需选择它们并在其上调用addClass

$('li').addClass('selected');