2011-09-20 162 views
10

我构建了一个FAQ页面,可以隐藏和显示每个问题下的内容。 我有一个“全部展开”功能,可以让用户显示所有问题。 当一个问题被展开时,它会得到一个“被选中”的类。检查所有项目是否具有相同的类别

我试图在所有问题(LIs)都展开时更改“展开全部”状态。

我该如何检查所有LI在同一时间都有CLASS“selected”?

我使用EACH方法来获取LI和它们的CLASS。

在此先感谢

+0

试试这个我不知道我明白你问什么;难道你不能只选择有“选择”类的列表项?虽然我不确定你会这样做 - 似乎最好只处理已扩展的单个列表元素。 –

回答

25

你或许可以指望用selected类列表项针对所有列表项:

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

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

+0

非常好的主意 - 我试试看!谢谢! – John

+0

它工作正常 - 感谢您的提示! – John

7

选择所有列表项,筛选出属于某一类的项目,然后确定是否有任何遗留下来的:

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

我不知道理解的问题,但检查如果jQuery对象有一个类,你使用.hasClass()

3

您可以将li元素的数量与li元素的数量与类别“selected”进行比较。如果这些数字是相同的,那么所有的li元素具有类:

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

您可以在任何时候做到这一点,它没有去的each循环中。

+0

按照Xion - 谢谢你的提示! – John

0

当我正确地把握你的想法时,你想在你点击一个ShowAll按钮时将你的类的所有元素设置为selected

您不需要遍历所有li元素。

只需选择它们并呼吁他们addClass

$('li').addClass('selected'); 
8
$("li:not(.selected)").length 

会给你的不具有“选定”类<li> S上的号码。如果这个数字为零,你可以运行你的逻辑。

2

或者你可以用size()

if($("li.success").size() == $("li").size()){ 
    //return true 
} 
相关问题