Jquery - 替换数组中定义的多个类

时间:2017-06-01 09:58:42

标签: javascript jquery arrays toggle

假设我有以下div:

<div class="device iphone5 black"></div>

我想要一个切换按钮来更改设备。因此,应该更改类。但是,不仅应该替换.iphone5,还应该替换颜色.black

我有以下数组:

var devices = [
            '.iphone5 .black',
            '.nexus5',
            '.iphone4s .black',
            '.lumia920 .blue',
            '.s5 .white',
            '.htc-one'
        ];

如何创建一个切换器来检查具有.device类的div是否具有在数组中定义的类之一,然后将其替换为下一个?类似的东西:

<script>
$('.device').filter(devices.join())$('.device').is(devices.join("")
        .attr('class', 'device ' + devices[NEXT]);
</script>

1 个答案:

答案 0 :(得分:2)

遍历数组,搜索与当前选择器匹配的所有元素,并用下一个数组元素替换类。

你必须反过来遍历数组。否则,在您将.iphone5.black更改为.nexus5后,下一次迭代会将其更改为.iphone4s.black,并且所有内容都将以数组中的最后一个类结束。

for (var i = devices.length-2; i >= 0; i--) {
    $(".device" + devices[i]).attr("class", "device " + devices[i+1].replace(/\./g, ' '));
}

此外,您需要从devices中的值中取出空格。 .iphone5 .black表示搜索具有类.iphone5的{​​{1}}子项,但您希望这些类应用于同一元素,因此它应为black