Array中的jQuery对象类

use*_*341 0 arrays jquery

有没有办法检查对象的特定类是否在数组中 - 我用对象的'id'完成了它,但不能用'class'做 - 用'id'它是这样的:

var arr = [ 'error', 'button', 'items', 'basket' ];
if (jQuery.inArray($(this).attr('id'), arr) == -1) {
      // do something here
}
Run Code Online (Sandbox Code Playgroud)

我想有类似下面的东西,这是行不通的:

var arr = [ 'error', 'button', 'items', 'basket' ];
if (jQuery.inArray($(this).attr('class'), arr) == -1) {
      // do something here
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

只是为了向您展示我正在使用它:

var arr = [ 'error', 'button', 'items', 'basket' ];
$.each(data, function(k, v) {
    if (jQuery.inArray($(this).attr('class'), arr) == -1 && $('.' + k).length > 0) {
        $('.' + k).fadeOut(100, function() {
        $(this).hide().html(v).fadeIn(100);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

Ale*_*aho 5

$(this).is(
     [ 'error', 'button', 'items', 'basket' ]
     .map(function(cls) {return "." + cls;})
     .join(',')
);
Run Code Online (Sandbox Code Playgroud)
  1. $(this).is(selector) 检查给定对象或对象集是否与选择器匹配.
  2. 为了构造选择器,我们对类的数组感兴趣 [ 'error', 'button', 'items', 'basket' ]
  3. 在选择类时,.<class_name>我们使用map将点添加到每个类名array.map(function(cls) {return "." + cls;})
  4. 为了使它成为一个完整的选择器,我们可以使用逗号作为分隔符来连接数组元素 array.join(',')

结果是$(this).is('.error, .button, .items, .basket'),如果$(this)定义了任何类,则匹配哪些匹配.