2016-06-21 81 views
4

我想添加一个“禁用”类到类名不在数组中的元素,并且我有一个像这样的数组输出:如何将一个类添加到类名不在数组中的元素

["xs", "xl", "s", "m"] 

和HTML类似这样的标记:

<a href="js:;" class="pa_size xs" title="xs" data-select="pa_size" data-value="xs">XS</a> 
<a href="js:;" class="pa_size xl" title="xl" data-select="pa_size" data-value="xl">XL</a> 
<a href="js:;" class="pa_size s" title="s" data-select="pa_size" data-value="s">S</a> 
<a href="js:;" class="pa_size m" title="m" data-select="pa_size" data-value="m">M</a> 
<a href="js:;" class="pa_size l" title="l" data-select="pa_size" data-value="l">L</a> 

我已经试过这样的事情:

if ($.inArray(val, array) !== -1) { ... } 

$.each(array, function() { ... } 

但没有运气。使用

+0

请在您尝试使用所显示的代码的位置显示更多上下文。我们无法帮助你解决为什么没有看到你如何应用它 – charlietfl

+0

@mplungjan不抱怨,但使用'if($ .inArray(val,array)!== -1){...}'应该在适当的上下文中工作为什么我问 – charlietfl

+0

啊,我明白了。是的,我们不知道他是如何得到'val' – mplungjan

回答

3

生成multiple class selector阵列和使用:not()伪类或jQuery中not()方法避免它们。

var classes = ["xs", "xl", "s", "m"]; 
 

 
$('a').not(classes.map(function(v) { 
 
    // iterate and add `.` before each element 
 
    return '.' + v; 
 
    // join using `,` to act them as multi selector 
 
}).join(',')).addClass('class')
.class { 
 
    color: red 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="js:;" class="pa_size xs" title="xs" data-select="pa_size" data-value="xs">XS</a> 
 
<a href="js:;" class="pa_size xl" title="xl" data-select="pa_size" data-value="xl">XL</a> 
 
<a href="js:;" class="pa_size s" title="s" data-select="pa_size" data-value="s">S</a> 
 
<a href="js:;" class="pa_size m" title="m" data-select="pa_size" data-value="m">M</a> 
 
<a href="js:;" class="pa_size l" title="l" data-select="pa_size" data-value="l">L</a>


或者更简单,因为@charlietfl建议

var classes = ["xs", "xl", "s", "m"]; 
 

 
$('a').not('.' + classes.join(',.')).addClass('class')
.class { 
 
    color: red 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="js:;" class="pa_size xs" title="xs" data-select="pa_size" data-value="xs">XS</a> 
 
<a href="js:;" class="pa_size xl" title="xl" data-select="pa_size" data-value="xl">XL</a> 
 
<a href="js:;" class="pa_size s" title="s" data-select="pa_size" data-value="s">S</a> 
 
<a href="js:;" class="pa_size m" title="m" data-select="pa_size" data-value="m">M</a> 
 
<a href="js:;" class="pa_size l" title="l" data-select="pa_size" data-value="l">L</a>

+1

更简单$'('a')。not('。'+ classes.join(',。'))' – charlietfl

+0

@charlietfl:哇那会很好 –

+1

@ charlietfl - 这个例子更好。我也喜欢地图 – mplungjan

相关问题