我有多个div组,需要对每个组的div应用一个随机类,并且在每个组中不重复。完成后,我需要将数组“重置”回原始值,并继续到下一个div组,在其中再次对每个div应用随机类。
我的想法是得到像这样的东西:
<div class="mini-thumbnail-container">
<div class="mini-thumbnail-individual-image left">
<div class="mini-thumbnail-individual-image centre">
<div class="mini-thumbnail-individual-image right">
</div>
<div class="mini-thumbnail-container">
<div class="mini-thumbnail-individual-image centre">
<div class="mini-thumbnail-individual-image right">
<div class="mini-thumbnail-individual-image left">
</div>
<div class="mini-thumbnail-container">
<div class="mini-thumbnail-individual-image right">
<div class="mini-thumbnail-individual-image left">
<div class="mini-thumbnail-individual-image centre">
</div>
我不好意思地借用了另一个stackoverflow问题中的代码来回答这个问题,但我无法弄清楚如何使其作用于所有元素,而不仅仅是前三个。
以下是jQuery代码:
function shuffle(obj) {
var l = obj.length,
i = 0,
rnd,
tmp;
while (i < l) {
rnd = Math.floor(Math.random() * i);
tmp = obj[i];
obj[i] = obj[rnd];
obj[rnd] = tmp;
i += 1;
}
}
var classes = ["centre", "left", "right"];
shuffle(classes);
jQuery(".mini-thumbnail-individual-image").each(function() {
jQuery(this).addClass(classes.pop());
});
这里是我的div结构基本概述 - 我有多个这样的结构,我想迭代每个
并将随机类应用于每个。
HTML:
<div class="col-1-6">
<div class="mini-thumbnail-container">
<div class="mini-thumbnail-individual-image">
<img class="mini-thumbnail-image" src="" />
</div>
<div class="mini-thumbnail-individual-image">
<img class="mini-thumbnail-image" src="" />
</div>
<div class="mini-thumbnail-individual-image">
<img class="mini-thumbnail-image" src="" />
</div>
</div>
</div>
我认为我需要创建一个循环,每次在数组迭代后触发,一旦发现数组为空,就需要把类名重新推回去,然后循环下一组divs,直到每组div都应用了随机类,但也许有一种比我还没想到的更简单的方法。
提前感谢您!
if ( ! classes) {
替换为if (jQuery('.mini-thumbnail-individual-image:not(".left , .centre , .right")')) {
来检查是否已应用该类,但这似乎偶尔会将相同的类两次应用于 div 组中的元素。 - kieranstartupif (!classes || classes.length < 1) {...
- random_user_name