我需要检查以确保父容器的所有子元素都具有特定的类。有人能告诉我如何在jQuery中做到这一点?如何确保所有元素在jQuery中包含特定的类?
如果div标签的所有段落标记有类“正确的”
- >是的,所有的人都将获得该类
否则,不是div标签的所有段落标记有类
- > noope,他们都没有所需的类
我需要检查以确保父容器的所有子元素都具有特定的类。有人能告诉我如何在jQuery中做到这一点?如何确保所有元素在jQuery中包含特定的类?
如果div标签的所有段落标记有类“正确的”
- >是的,所有的人都将获得该类
否则,不是div标签的所有段落标记有类
- > noope,他们都没有所需的类
如果你的意思直接孩子,那么:
if ($('div').children('p').length === $('div').children('p.correct').length) {
// yes
}
else {
// no
}
要在心目当中所有后代<p>
标签,使用 “.find()” 而不是 “孩子()”。
编辑 —它会是渴望有这样的东西,一个插件:
$.fn.all = function(pred) {
var rv = true;
this.each(function(element) {
if (!pred(element)) return (rv = false);
});
return rv;
};
然后,你可以写:
if ($('div p').all(function(p) { return p.hasClass('correct'); })) {
// yes
}
类似 “.ANY()” 函数也会有用。
function doTheyReally() {
return $('parentSelector').children('p').size() == $('parentSelector').children('.correct').size();
}
编辑
和here's a jsfiddle你可以用这段代码测试。祝你好运!
几种方法映入脑海(如经常用jQuery的情况下)
一个,算上div标签$('div').find('p').length
内段落标记的数量,并带有段落标记的DIV 内用数字比较$('div').find('p.class').length
该弹簧想到的第二种方式,所需要的类是使用jQuery的过滤器()方法:
var childParagraphs = $('div').find('p');
if (childParagraphs.length == childParagraphs.filter('p.class').length)
{
// true
}
也可以通过一个如果您需要更复杂的规则(与“has-class”相对),则可以使用filter()方法的回调函数
另一种想到的方法是检查是否存在与“has类“选择器。
if ($('div').find('p').not('.class').length == 0)
{
// true
}
希望有帮助。
@Cofey刚才注意到你的评论如下,在示例中更新为使用find()。 – 2011-04-11 18:59:03
谢谢,不 - 他们不是直接的孩子。 – Cofey 2011-04-11 18:51:19
@Cofey ok然后使用“.find()” - 同样,如果你的页面真的很大,那么为了避免两个单独的jQuery页面搜索将会更快一些代码。如果页面不是太大,并且这不是频繁运行的,那么您将不会注意到性能问题。 – Pointy 2011-04-11 18:53:35