2013-10-03 199 views
1

我知道,如果我有这样的HTML:jquery选择匹配所有元素?

<ul> 
    <li class="list-item test">1</li> 
    <li class="list-item">2</li> 
    <li class="list-item">3</li> 
</ul> 

然后,我可以做jQuery中的以下内容:

$('ul > li').is('.test'); 

,它将返回正确的,因为,因为LIS的一个拥有一流的检测。我想要的是一种方法,只有当所有元素匹配选择器才会返回true,如下所示:

$('ul > li').all('.test'); // false; 
$('ul > li').all('.list-item'); // true 

是否存在这样的事情?

感谢,

+0

可能重复[检查是否所有项目都具有相同的类](http://stackoverflow.com/questions/7485066/check-if-all-items-have-the-same-class) –

回答

5

这应该这样做...

var allTest = $("ul > li.test").length === $("ul > li").length; 

或...

var allTest = $("ul > li:not(.test)").length === 0; 

首先做一个检查,看看数量具有类测试的li元素与li元素的数量相同(不管类)。

第二只检查有多少人没有班级考试的人数。

+0

谢谢。这是我一直在使用的,这是一个遗憾,这不是内置于jQuery(我想可能会更有效率。)我想我刚刚被LINQ宠坏了。 – JoeS

+0

啊,我更喜欢第二种方法。这看起来会更快,因为它不涉及搜索所有东西两次(我正在处理很多元素)。感谢你,我会尽快将它标记为最佳答案,只要SO会让我。 – JoeS

+0

我认为第二个将是最有效的方式(当然不是我建议的2)。有可能改进它,但这是可读和功能性的,所以我会去那个。 **编辑:**你ninja'd我 - 我同意你:) – Archer

相关问题