将随机类应用于指定的每个元素

Wor*_*ing 4 css random jquery

我想在我的#container div中添加一个随机类甚至<li>元素

这是我的代码:

$( "#container li" ).each(  

  $().ready(function() {

        $("#container li:random").addClass("one");
        $("#container li:random").addClass("two");
        $("#container li:random").addClass("three");

    })
    );
Run Code Online (Sandbox Code Playgroud)

问题是我有十个<li>元素,我希望这些元素中的每一个以随机方式接收三个可能类中的一个.

但是我上面的代码只分配了三个<li>元素,而剩下的七个<li>元素没有类.

我已经尝试了其他代码片段,但没有一个代码随机地将类列表应用于指定的所有元素.

我试图从这篇文章摘录的位置,但无论哪一种都不确保所有元素得到一个随机类的期望的结果.

谢谢您的帮助.

Pau*_*aul 11

您可以使用一个类数组,然后将该数组中的随机类分配给匹配选择器的每个元素,如下所示:

$(document).ready(function(){
    var classes = ["one", "two", "three"];

    $("#container li").each(function(){
        $(this).addClass(classes[~~(Math.random()*classes.length)]);
    });
});
Run Code Online (Sandbox Code Playgroud)

如果要确保每个类仅使用一次,则可以在使用它时将其从数组中删除:

$(document).ready(function(){
    var classes = ["one", "two", "three"];

    $("#container li").each(function(){
        $(this).addClass( classes.splice( ~~(Math.random()*classes.length), 1 )[0] );
    });
});
Run Code Online (Sandbox Code Playgroud)