我正在寻找一种检查div是否完全列表中的类的方法。例如:
我的课程列表:.cat,.dog 和 .fish
如果div .animals只有 div与这些类,做一些事情,但如果我的列表中没有包含另一个类(即:.cat,.dog, .fish 和 .house)或者如果缺少一个类(即:.cat 和 .dog)做一些不同的事情。
有办法做到这一点吗?我尝试用.has(),. hasclass()和.is()进行检查,但是我无法按照自己的意愿使用它。
答案 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
}
等...