首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混洗/随机化一组带有两个子元素的div

混洗/随机化一组带有两个子元素的div
EN

Stack Overflow用户
提问于 2016-01-05 22:30:21
回答 2查看 438关注 0票数 0

提前感谢您阅读本文。

我有一组div(在网格中),并试图在每次页面加载时实现随机/随机排序。本质上这不是什么大问题,但关键是我有一个父div (网格)和几个孩子(1级),这些孩子又有几个孩子(2级)。

通过一个小的jQuery,我已经在每次页面加载时实现了1级div的随机顺序,但我也需要2级div的随机顺序。

如果起始顺序如下所示(例如):

A-B-C

D-E-F

G-H-I

我需要一个这样的新订单(例如):

G-A-D

C-F-H

I-B-E

感谢您的每一个帮助!

我做了个小提琴:https://jsfiddle.net/tns9qumn/

代码语言:javascript
复制
$(function() {
  var parent = $(".grid");
  var divs = parent.children();
  while (divs.length) {
    parent.append(divs.splice(Math.floor(Math.random() * divs.length), 1)[0]);
  }
});
代码语言:javascript
复制
.level-2 {
  width: 3rem;
  height: 3rem;
  background-color: black;
  margin: .5rem;
  color: white;
  display: inline-block;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="grid">
  <div class="level-1">
    <div class="level-2">A</div>
    <div class="level-2">B</div>
    <div class="level-2">C</div>
  </div>
  <div class="level-1">
    <div class="level-2">D</div>
    <div class="level-2">E</div>
    <div class="level-2">F</div>
  </div>
  <div class="level-1">
    <div class="level-2">G</div>
    <div class="level-2">H</div>
    <div class="level-2">I</div>
  </div>
</div>

EN

回答 2

Stack Overflow用户

发布于 2016-01-05 23:04:20

不确定,但试试这个?

代码语言:javascript
复制
$.fn.randomize = function(a,b) {
  return this.each(function() {
      var $this = $(this);
      var elems = $this.children(a).children(b);
      var len = $this.find(a).eq(0).find(b).length;

      elems.sort(function() { return (Math.round(Math.random())-0.5); });  

      $this.detach(a);  

      for(var i=0; i < elems.length; i++) {
        $this.find(a).eq(i%len).append(elems[i]);
      }

  });    
}

$('.grid').randomize('.level-1','.level-2');

演示:https://jsfiddle.net/l2aelba/rpnyamnL/

原创者:https://stackoverflow.com/a/1533945/622813

票数 2
EN

Stack Overflow用户

发布于 2016-01-05 22:56:56

您可以将所有的"level-2“<div>放入一个数组中,然后对其进行混洗并重新创建网格。

对于shuffle函数,可以查看here

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34614086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档