jQuery – 检查元素是否有数组中的类?

我试图检查一个元素是否有一个数组的类,如果是这样,该类的值是什么。 目前我正在使用:

if ($(this).hasClass('purple_grad')) { $thisFKeyColour = 'purple_grad'; } else if ($(this).hasClass('red_grad')) { $thisFKeyColour = 'red_grad'; } else if ($(this).hasClass('green_grad')) { $thisFKeyColour = 'green_grad'; } else if ($(this).hasClass('blue_grad')) { $thisFKeyColour = 'blue_grad'; } else if ($(this).hasClass('yellow_grad')) { $thisFKeyColour = 'yellow_grad'; } else if ($(this).hasClass('light_yellow_grad')) { $thisFKeyColour = 'light_yellow_grad'; } else if ($(this).hasClass('lighter_yellow_grad')) { $thisFKeyColour = 'lighter_yellow_grad'; } else if ($(this).hasClass('grey_grad')) { $thisFKeyColour = 'grey_grad'; } else if ($(this).hasClass('light_grey_grad')) { $thisFKeyColour = 'light_grey_grad'; } else if ($(this).hasClass('black_grad')) { $thisFKeyColour = 'black_grad'; } } alert($thisFKeyColour); 

有更好的方法吗? 就像是:

 if (in_array(classes, element.attr('class'))) { $thisFKeyColour = Class_Of_Element_That_Matched_Array; } 

另外,我不能只返回.attr(’class’),因为它们是元素上的多个类。

干杯
查理

cols是你的类名数组。 这是未经测试的,但无论元素具有多少类,它都将起作用。

 for ( var i = 0; i < cols.length; i++ ) { if ( $(this).hasClass( cols[i] ) ) { $thisFKeyColour = cols[i]; break; } } 

以下应该做(未经测试):

 var elementClasses = $(this).attr("class").split(" "); for(var i = 0; i < elementClasses.length; i++) { if($.inArray(elementClasses[i], classes)) { $thisFKeyColour = classes[i]; break; } } 

在这里尝试一下。

参考:

http://api.jquery.com/jQuery.inArray/

假设

 var possibleFKeyColors = [ 'purple_grad', 'red_grad', 'green_grad', 'blue_grad', 'yellow_grad', 'light_yellow_grad', 'lighter_yellow_grad', 'grey_grad', 'light_grey_grad', 'black_grad' ]; 

普通JS,支持较旧的浏览器

 var hasIndexOf = Array.prototype.indexOf, // older browsers testClasses = (hasIndexOf)?"":"@"+possibleFKeyColors.join("@")+"@"; function getClass(obj) { var possibleClasses = obj.getAtttribute("class").split(" "); for (var i=0;i 

jQuery的

 function getClass(obj) { var thisFKeyColour = ""; $.each(possibleFKeyColors, function(i,class) { if (obj.hasClass(class)) { thisFKeyColour=class; return false; } } return thisFKeyColour; } var FKeyColour = getClass($("#someObject"));