使用Jquery显示随机div

Mik*_*ler 11 jquery

如果包含图像的div,我有一个列表.每次页面加载时我都需要随机显示其中的4个.这是我开始的代码.

<div class="Image"><img src="/image1.jpg"></div>
<div class="Image"><img src="/image2.jpg"></div>
<div class="Image"><img src="/image3.jpg"></div>
<div class="Image"><img src="/image4.jpg"></div>
<div class="Image"><img src="/image5.jpg"></div>
<div class="Image"><img src="/image6.jpg"></div>
<div class="Image"><img src="/image7.jpg"></div>
Run Code Online (Sandbox Code Playgroud)

所有这些都将以display:none开头,我想随机取4个div并将它们设置为display:block.我假设我需要在某处使用"Math.random()",但不确定JQuery是如何做到这一点的.任何指针将不胜感激.

Nic*_*ver 17

我发现它们随机排序然后显示前4个是最简单的,如下所示:

var divs = $("div.Image").get().sort(function(){ 
            return Math.round(Math.random())-0.5; //so we get the right +/- combo
           }).slice(0,4);
$(divs).show();
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.如果你想随机化顺序(不仅仅是显示顺序),你已经对它们进行了排序,所以只需将它们更改为以新顺序将它们附加到同一个父顺序:

$(divs).show();
//to this:
$(divs).appendTo(divs[0].parentNode).show();
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试那个版本.

  • 显然,偏见取决于`sort`的实现.我做了[测试](http://phrogz.net/JS/JavaScript_Random_Array_Sort.html)来显示差异.OS X上Firefox(3.6和4.0b7)的结果范围为3.1%至24.6%.Chrome更糟糕,从0.8%到29.2%不等.Safari 4颠覆了偏见和票价,仅从7.4%到17.8%不等.然而,所有这些都使用预先计算的排序键显示均匀分布. (3认同)