如何确保所有元素都包含jQuery中的特定类?

时间:2011-04-11 18:45:30

标签: javascript jquery

我需要检查以确保作为其父容器的子元素的所有元素都具有特定的类。有人能告诉我如何在jQuery中执行此操作吗?

如果div标签的所有段落标签都具有“正确”类

- >是的,所有人都有班级

否则,并非div标签中的所有paragragh标签都具有该类

- > noope,他们都没有必要的等级

3 个答案:

答案 0 :(得分:3)

如果您指的是直接孩子,那么:

if ($('div').children('p').length === $('div').children('p.correct').length) {
  // yes
}
else {
  // no
}

要在计算中包含所有后代<p>标记,请使用“.find()”而不是“.children()”。

编辑 - 它希望有这样的插件插件:

$.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()”函数也很有用。

答案 1 :(得分:0)

function doTheyReally() {
    return $('parentSelector').children('p').size() == $('parentSelector').children('.correct').size();
}

修改

here's a jsfiddle您可以使用此代码进行测试。祝你好运!

答案 2 :(得分:0)

一些想到的方式(jQuery经常出现这种情况)

一,计算div标签$('div').find('p').length内的段落标签数量,并将其与div 中段落标签的数量与所需的类别进行比较 $('div').find('p.class').length

第二种方法是使用jQuery filter()方法:

var childParagraphs = $('div').find('p');
if (childParagraphs.length == childParagraphs.filter('p.class').length)
{
    // true
}

如果您需要更复杂的规则(而不是“has-class”),您也可以将回调函数传递给filter()方法

另一种让人想到的方法是检查是否存在与“has-class”选择器不匹配的元素。

if ($('div').find('p').not('.class').length == 0)
{
    // true
}

希望这有帮助。