私は3列のレイアウトを持っており、各列には同様のコンテンツのブロックを保持する複数のdivがあります。
<section class="info-blocks-container clearfix">
<div id="col1">
<div class="info-block">...</div>
<div class="info-block">...</div>
<div class="info-block">...</div>
</div>
<div id="col2">
<div class="info-block">...</div>
<div class="info-block">...</div>
</div>
<div id="col3">
<div class="info-block">...</div>
<div class="info-block">...</div>
<div class="info-block">...</div>
</div>
</section>
div#col1
、、div#col2
およびdiv#col3
列内の子divをランダムにシャッフルしたいので、#col1
の子divの一部は、#col2
および/または#col3
、またはその逆になります。ここにあるcodeparadoxを使用していて(「undo」関数を削除しました)、シャッフルは機能していfunction reorder()
ますが、1。3つの
別々の重複関数がある方法は非常に汚れており、
2。各列内のdivを並べ替えているだけです( 3つの列の間で子divを共有しない):
<script type="text/javascript">
$(function(){
reorder();
reorder2();
reorder3();
function reorder() {
var grp = $(".info-blocks-container > div:nth-child(1)").children();
var cnt = grp.length;
var temp, x;
for (var i = 0; i < cnt; i++) {
temp = grp[i];
x = Math.floor(Math.random() * cnt);
grp[i] = grp[x];
grp[x] = temp;
}
$(grp).remove();
$(".info-blocks-container > div:nth-child(1)").append($(grp));
}
function reorder2() {
var grp = $(".info-blocks-container > div:nth-child(2)").children();
var cnt = grp.length;
var temp, x;
for (var i = 0; i < cnt; i++) {
temp = grp[i];
x = Math.floor(Math.random() * cnt);
grp[i] = grp[x];
grp[x] = temp;
}
$(grp).remove();
$(".info-blocks-container > div:nth-child(2)").append($(grp));
}
function reorder3() {
var grp = $(".info-blocks-container > div:nth-child(3)").children();
var cnt = grp.length;
var temp, x;
for (var i = 0; i < cnt; i++) {
temp = grp[i];
x = Math.floor(Math.random() * cnt);
grp[i] = grp[x];
grp[x] = temp;
}
$(grp).remove();
$(".info-blocks-container > div:nth-child(3)").append($(grp));
}
});
</script>
助言がありますか?