检查div是否具有列表中的类

时间:2013-07-14 22:17:02

标签: jquery

我正在寻找一种检查div是否完全列表中的类的方法。例如:

我的课程列表:.cat,.dog .fish

如果div .animals只有 div与这些类,做一些事情,但如果我的列表中没有包含另一个类(即:.cat,.dog, .fish .house)或者如果缺少一个类(即:.cat .dog)做一些不同的事情。

有办法做到这一点吗?我尝试用.has(),. hasclass()和.is()进行检查,但是我无法按照自己的意愿使用它。

2 个答案:

答案 0 :(得分:2)

var $el = $('.animals');
// using .is makes sure it doesn't matter the order
if ( $el.is('.cat.dog.fish') ) {
    if ( $.trim($el.attr('class').replace(/\b(animals|cat|dog|fish)\b/g, '')) ) {
        // it has some other class
        return;
    }
    // You're good to go
} else {
    // does not have all classes
}

为正则表达式添加了边界和全局标记。

基于OP评论中的小提琴:

var $el = $('.animals');
var children = $el.children();
if ( children.filter(":not(.dog):not(.cat):not(.fish)" ).length ) {
    // Something else is in there
    alert("There's something else!");
} else {
    if ( ! children.filter('.dog').length || ! children.filter('.cat').length || ! children.filter('.fish').length ) {
        // Something is missing
        alert("You're missing something");
        return;
    }
    // Good to go.
    alert("Everything is good!");
}

尽管如此,我很确定有更有效的方法可以做到这一点。

答案 1 :(得分:0)

只需使用hasClass();

像这样......

 var check = $('.animals').hasClass('fish cat dog');
 if(check) {
 //do stuff you wanna do   
 } else {
 //do other stuff
 }

然而,如果你想检查它是否有其中一个类,这将检查它是否具有该顺序的那些类。那么......

var dog = $('.animals').hasClass('dog');
var cat = $('.animals').hasClass('cat');
var fish = $('.animals').hasClass('fish');

然后你可以为你需要的变量做一个if。

if((dog)&&(cat)&&(fish)){
 //do stuff
 } else {
 //do other stuff
 }

等...