0

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>

またはリロードごとに他の順序。

4

6 に答える 6

6

このようにシンプルに

$("#parent").html($("#parent").children().sort(function() { return 0.5 - Math.random() }));

ここに実例がありますhttp://jsfiddle.net/CPQXw/1/

于 2013-01-09T15:01:08.973 に答える
3

これを参照してください: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タグで機能します

于 2013-01-09T14:52:29.797 に答える
2

他のスニペット:

http://jsfiddle.net/t8gU7/

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);
于 2013-01-09T14:57:54.687 に答える
1

次のような順序の配列があると仮定します。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を再配置する方法です!私が要点を逃した場合は申し訳ありませんが、それはあなたがあなたの質問で尋ねたものです。

于 2013-01-09T14:56:51.617 に答える
1

このようなもの?

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++;
}
于 2013-01-09T14:55:49.100 に答える