div オーダーを並べ替える方法はありますか? より正確な方法で取得できます
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
これ
<div id="3"></div>
<div id="1"></div>
<div id="4"></div>
<div id="2"></div>
またはリロードごとに他の順序。
div オーダーを並べ替える方法はありますか? より正確な方法で取得できます
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
これ
<div id="3"></div>
<div id="1"></div>
<div id="4"></div>
<div id="2"></div>
またはリロードごとに他の順序。
このようにシンプルに
$("#parent").html($("#parent").children().sort(function() { return 0.5 - Math.random() }));
ここに実例がありますhttp://jsfiddle.net/CPQXw/1/
これを参照してください:http://jsfiddle.net/KfY4u/
$("div.container div").sort(function(){
return Math.random()*10 > 5 ? 1 : -1;
}).each(function(){
var $t = $(this);
$t.appendTo( $t.parent() );
});
そして、これは任意の数のdiv
タグで機能します
他のスニペット:
var $divs = $('#container div');
for(var j, x, i = $divs.length; i; j = parseInt(Math.random() * i), x = $divs[--i], $divs[i] = $divs[j], $divs[j] = x);
$('body').append($divs);
次のような順序の配列があると仮定します。varorder=[3、1、4、2]; ここで、次のように、div用のコンテナdivがあると仮定します。
<div id="container">
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
</div>
続行する方法は次のとおりです。配列を最後から最初まで調べ、各divの前に対応するIDを'container'divに追加します。
$(document).ready(function() {
var order = [3, 1, 4, 2];
for(var i=order.length-1; i>=0; i--) {
$('#container').prepend($('#'+order[i]));
}
});
楽しみ!
編集:質問の私の理解は、新しいランダムな順序を生成する方法ではなく、divを再配置する方法です!私が要点を逃した場合は申し訳ありませんが、それはあなたがあなたの質問で尋ねたものです。
このようなもの?
var ids = [], max = 4, i = 0, rand = 0;
while(i < max){
do{
rand = Math.floor(Math.random() * max);
} while(ids.indexOf(rand) < 0)
ids.push(rand);
i++;
}