【发布时间】:2019-12-28 18:26:29
【问题描述】:
我正在寻找一种方法来使用 jQuery 随机化 <li> 列表的顺序,但将它们按类分组。因此,如果我有 3 个级别的 <li>,我希望它们以随机顺序出现在我的 <ul> 中,但同时将最高级别(由其类定义)的 <li> 保持在顶部,然后将第二高组也以随机顺序排列,依此类推。
我已经设法使用一个函数来随机重新排序项目,但无法按级别对它们进行分组。我的jQuery知识很基础。
随机排序前的示例代码
<ul id="myList">
<li class="level3"><a href="">Link #1</a></li>
<li class="level3"><a href="">Link #2</a></li>
<li class="level3"><a href="">Link #3</a></li>
<li class="level2"><a href="">Link #4</a></li>
<li class="level2"><a href="">Link #5</a></li>
<li class="level2"><a href="">Link #6</a></li>
<li class="level2"><a href="">Link #7</a></li>
<li class="level1"><a href="">Link #8</a></li>
<li class="level1"><a href="">Link #9</a></li>
<li class="level1"><a href="">Link #10</a></li>
<li class="level1"><a href="">Link #11</a></li>
<li class="level1"><a href="">Link #12</a></li>
</ul>
已编辑:这是我用来随机排序的脚本
var items = $("#myList > li");
for(var i = 0; i < items.length; i++){
var target = Math.floor(Math.random() * items.length -1) + 1;
var target2 = Math.floor(Math.random() * items.length -1) +1;
items.eq(target).before(items.eq(target2));
}
我希望随机生成类似这个订单的东西。
<ul id="myList">
<li class="level3"><a href="">Link #3</a></li>
<li class="level3"><a href="">Link #1</a></li>
<li class="level3"><a href="">Link #2</a></li>
<li class="level2"><a href="">Link #6</a></li>
<li class="level2"><a href="">Link #4</a></li>
<li class="level2"><a href="">Link #7</a></li>
<li class="level2"><a href="">Link #5</a></li>
<li class="level1"><a href="">Link #10</a></li>
<li class="level1"><a href="">Link #12</a></li>
<li class="level1"><a href="">Link #9</a></li>
<li class="level1"><a href="">Link #8</a></li>
<li class="level1"><a href="">Link #11</a></li>
</ul>
【问题讨论】:
-
请添加执行随机化的代码,然后我们将能够建议如何改进它以进行分组
-
在 OP 上添加脚本