2010-07-23 83 views
0

需要在jquery中运行for循环。条件是:For循环jQuery

我有以下代码

<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. 变种线= 2;
  2. for循环将运行到的行数,即2倍
  3. 有UL
  4. 下7 LI项当LI计数变为8项
  5. 作为,需要以产生第二UL和第八LI项
    将作为第二个UL的一部分出现。

因此,当超过7个物品出现时,单独的UL将包装这些LI物品。

请帮忙!

+1

我不明白这一点。你可以把一些伪代码看做是如何工作的吗? – spinon 2010-07-23 05:18:40

+0

我已经放置了代码。我需要运行for循环到var行的值。所以如果li项目超过7个,那么它将为那个LI分配一个单独的ul。 我不知道这个循环。您可以修改代码来实现结果。 – 2010-07-23 05:23:07

回答

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

非常感谢Fantactuka。你的代码帮助我取得最终结果。 再次感谢。 – 2010-07-23 10:13:40

0

为什么不是你做这样的(如果有特殊原因,请让我知道) -

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

我明白了你的观点萨达特,你可以写下代码,以便即使我能理解如何在这个特定场景中实现循环。 如果可能的话,请帮我编码。 – 2010-07-23 05:29:55