2013-01-09 34 views
-1

有沒有重新排列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> 

或者以每重載任何其他命令獲得。

+0

顯示你已經盡力了,並給予更多的細節(隨機,設置特定的新訂單等)。我將心思念給那些有能力的人的。 –

+0

如果我使用math.random()是不是有機會有兩個具有相同ID的div例如? –

+0

對兩個元素使用相同的ID是不正確的。 –

回答

5

簡單這樣

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

這裏正在例如http://jsfiddle.net/CPQXw/1/

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標籤

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++; 
} 
1

我將假設你有順序的陣列,像這樣: 變種順序= [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> 

你應該如何繼續是這樣的:經過從年底開始的數組,並在前面加上每格對應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])); 
    } 
}); 

Enjoy!

編輯:我對這個問題的理解是如何重新安排div,而不是如何生成一個新的隨機順序!對不起,如果我錯過了這一點,但這是你問你的問題。

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);