2010-07-23 6 views
0

Nécessité d'exécuter une boucle for dans jquery. La condition est:For loop in jQuery

i avoir le code suivant

<div id="container"> 
    <ul> 
    <li style="background-color:#CCC">First</li> 
    <li style="background-color:#CCC">Second</li> 
    <li style="background-color:#CCC">Third</li> 
    <li style="background-color:#CCC">Fourth</li> 
    <li style="background-color:#999">Fifth</li> 
    <li style="background-color:#666">Sicth</li> 
    <li style="background-color:#000; color:#FFF;">Seventh</li> 
    <li style="background-color:#000; color:#FFF;">Eighth</li> 
    </ul> 
</div>  

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var w = 0; 
     var bpl=7; 
     var tw = 960; 
     var cal_width =0; 
     var lines =0; 
     w = $('li').size(); 
     cal_width = (tw/w)-30 + "px"; 
     lines = Math.floor(w/bpl) + (w%bpl>0 ? 1 : 0); 
     $("#container").each(function(lines){ 
      //$("ul > li").css({"width": cal_width}); 
     }); 
    }); 
</script>  
  1. lignes var = 2;
  2. boucle se déroulera au nombre de lignes soit 2 fois
  3. il y a 7 articles LI sous UL
  4. comme lorsque le nombre de LI va à 8 éléments, doivent générer une seconde UL et 8 LI point
    apparaîtra dans le cadre de la deuxième UL.

de sorte qu'un quand plus de 7 articles vient alors un UL séparé emballera ces éléments LI.

Aidez s'il vous plaît!

+1

Je ne comprends pas. Pouvez-vous mettre un pseudo code de comment vous le verriez fonctionner? – spinon

+0

J'ai placé le code. Je dois lancer la boucle for à la valeur des lignes var. de sorte que si les éléments de li sont plus de 7 que cela fera un ul séparé pour cette LI. Je n'ai aucune idée de la boucle. vous pouvez modifier le code pour atteindre le résultat. –

Répondre

2
var container = $("#container"); 
var lis = $("ul > li", container); 
var ul; 

container.empty(); 

for (var i = 0, l = lis.length; i < l; i ++) { 
    if (i % 7 == 0) ul = $("<ul />").appendTo(container); 
    $(lis[i]).appendTo(ul); 
} 
+0

merci beaucoup Fantactuka. Votre code m'a beaucoup aidé à atteindre le résultat final. Merci beaucoup encore une fois. –

0

pourquoi ne pas vous faire comme ça (si une raison particulière, s'il vous plaît laissez-moi savoir) -

1. Open first UL 
2. Do Creat Li until reach to limit // here 7 
3. Close first UL 
4. Open second UL 
5. Creat Li 
6. Close second UL 
+0

J'ai obtenu votre point Sadat, pouvez-vous écrire le code de sorte que même je peux comprendre comment mettre en œuvre pour la boucle dans ce scénario particulier. S'il vous plaît aidez-moi avec le code si possible. –