2010-06-18 9 views
4

Je travaille sur le site HTML d'un client et j'ai besoin de commander au hasard un ensemble de Divs lors de l'actualisation d'une page. Je traiterais normalement ceci via PHP et un appel de base de données, mais c'est un site statique. Donc, je me demande si quelqu'un sait comment afficher aléatoirement un ensemble de div en utilisant jquery?Modifier l'ordre DIV avec jquery

Voici un exemple:

<div class="myItems"> 
    <div class="item">1</div> 
    <div class="item">2</div> 
    <div class="item">3</div> 
</div> 

et à l'actualisation, il pourrait changer à:

<div class="myItems"> 
    <div class="item">2</div> 
    <div class="item">3</div> 
    <div class="item">1</div> 
</div> 

Quelqu'un sait comment faire?

+0

duplication possible de [Randomiser une séquence d'éléments div avec jQuery] (http://stackoverflow.com/questions/1533910/randomize-a-sequence-of-div-elements-with-jquery) –

Répondre

1

En fait, il est assez simple:

$(".myItems").html($(".myItems .item").sort(function(){ 
    return Math.random()-0.5; 
})); 

Ca y est! Profitez-en.

8

Ce willl faire

function reorder() { 
      var grp = $(".myItems").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(); 
     $(".myItems").append($(grp)); 
     } 
+0

+1: C'est joliment fait :) – Sarfraz

+0

Cela a fonctionné magnifiquement! Merci Joseph !!!! – Troy

0

Une autre façon simple ... 1. Créez un tableau 2. générer un nombre aléatoire et vérifier si elle est pair ou impair 3. Si étrange, ajouter votre div vers le haut (méthode de décalage). Si même, ajoutez votre div au fond (méthode push). 4. Ainsi, vos divs seront arrangés aléatoirement dans le tableau. 5. Maintenant, joignez simplement le tableau et ajoutez-le à votre page.

var divArray = []; 

for(var i=0; i<divs.length; i++){ 
    //generate random number 
    if(rand_num == odd) 
    divArray.push(div[i]); 
    else 
    divArray.shift(div[i]); 
} 

$(myElem).html(divArray.join(""));