将我附加到另一个的 div 随机化

Posted

技术标签:

【中文标题】将我附加到另一个的 div 随机化【英文标题】:Randomize the divs that I append into another one 【发布时间】:2014-09-21 15:54:33 【问题描述】:

这就是我所拥有的:

$(function()
    $('.apple').appendTo('.container');
);

现在,假设我有 20 个不同的 div,类名为 .apple

我怎样才能让它们容器 随机添加?所以每次我加载页面时,顺序都会不同。

提前谢谢你!

【问题讨论】:

可能重复***.com/questions/1533910/… 【参考方案1】:
$.when($(".apples"), [])
    .done(function (data, apples) 
    $.each(data, function (k, v) 
        setTimeout(function () 
            apples.push(v);
            if (apples.length === data.length) 
                $(apples).appendTo(".container")
            ;
        , 1 + Math.floor(Math.random() * 5));
    );
);

jsfiddle http://jsfiddle.net/guest271314/d4p39/

【讨论】:

【参考方案2】:
Try Something like this:

html Code :

<div class="wrapper"><div class="apple">Apple</div></div>
<button id="test">Add</button>
<div class="container"></div>

js code :

  $('#test').click(function()
    var div_length = $('.container .apple').length;
    var rand = Math.floor(Math.random() * div_length);
    if($(".container").children().length > 0)
        $(".container .apple:eq("+rand+")").after(jQuery('.wrapper').html()).attr('rand',rand);
    else
        $(".container").append(jQuery('.wrapper').html());
  );

 Note : I have taken wrapper to .apple class and have fired click event on button to append div

【讨论】:

【参考方案3】:

已编辑

你可以这样做:

//create an array equals number of .apple
var arr = [];

$(".apple").each(function(index)
    arr.push(index);//create an array with index
);

var shuffled_array = shuffle(arr);//shuffle the array

shuffled_array.forEach(function(index) 
    $(".apple:eq("+index+")").appendTo('.container');
);

function shuffle(array)  //Fisher–Yates Shuffle function
  var m = array.length, t, i;

  // While there remain elements to shuffle…
  while (m) 

    // Pick a remaining element…
    i = Math.floor(Math.random() * m--);

    // And swap it with the current element.
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  

  return array;

【讨论】:

同一个随机数生成两次怎么办??【参考方案4】:

你也可以这样使用:

$('.apple').sort(function(a,b)
  var tmp = parseInt( Math.random()*20 );
  var isOE = tmp % 2;
  var isPN = tmp > 10 ? 1 : -1;
  return( isOE * isPN );
).appendTo('.container');

for more details view this

【讨论】:

【参考方案5】:

为您提供一种可用于任意数量元素的方法。

生成 0 到 1 之间的随机数,并根据它附加或添加元素

$('.apple').each(function()
   var j = Math.floor(Math.random() * 2);
   if(j== 0)
       $('.container').append($(this)); 
   else 
       $('.container').prepend($(this)); 
);

【讨论】:

【参考方案6】:

您可以通过获取一些random 值来尝试下面的代码并将其用于if / else 条件:

$(function()
    $('.apple').each(function()
       var random = ((Math.random()*100) + 50).toFixed();

       if(random > 100)
          $('.container').append($(this)); 
       else if(random < 100)
           $('.container').prepend($(this)); 
        else
        
          var childCount = $('.container').children().length;
            $('.container').find('div:eq('+(childCount/2)+')').append($(this));   
        
    );
);

Demo

【讨论】:

【参考方案7】:

这样使用:

var idx;
$('.apple').each(function()
   idx = Math.floor(Math.random() * 20) +1;
   $(this).eq(idx).appendTo('.container');
);

【讨论】:

以上是关于将我附加到另一个的 div 随机化的主要内容,如果未能解决你的问题,请参考以下文章

如何随机化文本文件中获得的单词

如何在不替换条件的情况下随机化?

Codeforces Round #439 (Div. 2) Problem E (Codeforces 869E) - 暴力 - 随机化 - 二维树状数组 - 差分

Django order_by将查询集随机化两次?

如何阻止谷歌随机化 xmpp 资源

试图随机化一个数组,但每次都保持相同的随机化[重复]