我构建了一个常见问题页面,其中包含隐藏和显示每个问题下方内容的选项。 我有一个“全部展开”功能,让用户可以显示所有问题。 当问题被扩展时,它会得到一个“被选中”的类。
当我扩展所有问题(LI)时,我试图更改“全部展开”状态。
如何检查所有LI是否同时“选择”了CLASS?
我使用EACH方法获取LI及其CLASS。
提前致谢
答案 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');