Jquery检查元素中的多个类(All必须存在)

时间:2016-01-27 01:08:25

标签: javascript jquery

您好我正在尝试检查一个元素是否包含我找到的类:

<span class="foo bar me"></span>

我想检查该元素上是否存在foome类,所以我使用了这个:

$('body span').hasClass('me', 'foo')

这个foo和我存储在一个数组中,但这个没有工作:

var arrayName = ['me', 'foo'];
$('body span').hasClass(arrayName)

我发现的类是动态的,这就是它存储在数组中的原因,如何将动态数组如'me', 'foo'传递给hasClass函数?

注意: 数组中可以包含2-4个值。

我的工作在这里:https://jsfiddle.net/pcbttntk/

先谢谢。

更新: $('body span').hasClass('me', 'foo')无效,感谢brett和Roko,它只检查传递给它的第一个类。

2 个答案:

答案 0 :(得分:4)

有:

<span class="foo bar me"></span>

同时拥有mefoo类:

$('span').is(".foo.me");

使用类数组,您可以使用.join()来获取所需的字符串选择器".foo.me",如:

var classes = ['me', 'foo'];
$('span').is("."+ classes.join("."));   

或更简单:

var classes = ['.me', '.foo']; // (Notice the `.`)
$('span').is(classes.join(""));

总结一下,.hasClass('me', 'foo')基本上是错误的,因为.hasClass()只接受一个参数

答案 1 :(得分:0)

jQuery的.hasClass()只接受一个类,作为字符串(根据docs)。

要测试多个动态类,您可以使用.is()

var class1 = 'me';
var class2 = 'foo';

arrayNames = [class1, class2];

console.log($('body span').is(arrayNames.map(function(className) {return '.'+ className;}).join(',')));

这里是JSFiddle