jquery - 如何将类添加到类名不在数组中的元素

标签 jquery

我正在尝试将“禁用”类添加到类名不在数组中的元素,并且我有一个如下所示的数组输出:

["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() { ... }

但运气不好。

最佳答案

生成multiple class selector使用数组并使用 :not() 避免它们 伪类或 not() jQuery 中的方法。

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>

关于jquery - 如何将类添加到类名不在数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936158/

相关文章:

javascript - 可能的 JQuery 类选择器错误

JSP中jquery自动完成多个参数

javascript - 复选框选中或取消选中值 null

javascript - 触发子列表在类更改时的可见性

javascript - 如何在 for 循环中使用延迟对象

jquery - div 中 CSS 中的垂直居中文本

javascript - 将外部 JavaScript 加载延迟几秒

javascript - 如何将 php 变量访问到外部 .js(my.js) 文件

javascript - 当按下按钮时如何重新加载单独的页面?

javascript - 更改 <select> onclick 的内容