javascript - 随机.addClass到多个div而不重复

标签 javascript jquery html css arrays

我试图将类添加到具有相同类的三个 div,但我不希望重复添加任何类。

我有一个脚本可以将类添加到同时显示的 1、2 或 3 个 div。所需的效果是将图像显示为背景图像,并且在我的样式表中,我有多个类,这些类附加了这些图像。这些类在以下代码中定义并添加到相关的 div 中:

Javascript

$(document).ready(function(){
var classes = ["a01", "a02", "a03", "a04", "a05", "a06", "a07", "a08", "a09", "a10", "a11"];

    $(".S").each(function(){
    $(this).addClass(classes[~~(Math.random()*classes.length)]);
    });
});

此代码附加到以下HTML

<div class="brick">
    <div class="blend S"></div>
    <div class="blend S"></div>
    <div class="blend S"></div>
</div>

以下是此组合当前可能返回的一个结果的示例:

<div class="brick">
    <div class="blend S a01"></div>
    <div class="blend S a01"></div>
    <div class="blend S a06"></div>
</div>

注意a01的重复。以下是期望的结果:

<div class="brick">
    <div class="blend S a05"></div>
    <div class="blend S a02"></div>
    <div class="blend S a11"></div>
</div>

Here is a live test 。如果有人对我如何避免重复问题有任何jquery建议,我将非常感激。谢谢!

最佳答案

确保不重复的最简单方法是打乱列表并取出前 3 个元素:

$(document).ready(function(){
    var classes = shuffle(["a01", "a02", "a03", "a04", "a05", "a06", "a07", "a08", "a09", "a10", "a11"]);

    $(".S").each(function(i){
       $(this).addClass(classes[i]);
    });
});

请注意,我没有包含 shuffle 的实现。

关于javascript - 随机.addClass到多个div而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406786/

相关文章:

javascript - MongoDB 在集合中查找最新日期

javascript - 如何将对象传递给innerHTML (JavaScript) 中的函数?

javascript - Angular 过滤器不起作用

javascript - 动态添加的输入字段立即消失

javascript - 是否可以用 Javascript 编写纯文本?

javascript - jQuery 星级评分插件

javascript - 使用 jQuery 获取数据属性

javascript - 无法访问 coffeescript 中的属性

javascript - ENTER 在 POST 上从\n 转换为\r\n

javascript - 如何在两个动画 Canvas 元素之间进行通信?