2016-06-21 64 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

相關問題