在里面创建包含有限元素的列表

时间:2016-04-20 21:35:12

标签: javascript jquery html

我需要创建ul,内部限制为5 li。如果它超过5个元素 - 创建具有相同限制的新ul。等等。这是我的起点:

$(function(){
var $container = $('.container'),
		el = 5,
		i;  
	newUl = $('<ul />')
		for(i=0; i < el; i++){
			$container.append(newUl)
			$('<li />', { html : i }).appendTo(newUl)			
		}
})
* {
  box-sizing: border-box;
}

body {
  background: #f2f2f2;
}

.wrapper {
  display: table;
  margin: 0 auto;
  padding: 10px;
  max-width: 600px;
  width: 100%;
  height: 100vh;
  border: 2px solid rgba(0, 0, 0, 0.2);
}
.wrapper .container {
  display: table-cell;
  vertical-align: bottom;
}
.wrapper ul {
  background: #c0c0c0;
  border: 1px solid #333;
  font-size: 0;
}
.wrapper ul:nth-of-type(odd) {
  direction: rtl;
}
.wrapper ul li {
  display: inline-block;
  font-size: 16px;
  width: 20%;
  padding: 10px;
  border: 1px solid #333;
  text-align: center;
  direction: rtl;
}

.status {
  position: fixed;
  left: 0;
  top: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper"> 
	<div class="container"> 
		
	</div>
</div>
<div class="status"></div>

有任何建议怎么做?

2 个答案:

答案 0 :(得分:1)

我不太关注你的例子,所以请原谅我,我刚开始在这里开始。第一个循环和第2行的git diff master origin/master只是为了生成一个假数据列表。用0,小于5,5的倍数和1 + 5的倍数来测试它,以确保它有效。

12

您可以将其粘贴到控制台中以查看结果。最后添加var items = []; for(var i=0; i<12; i++) { items.push("item " + i.toString()); } var subItems = items.splice(0, 5); var div = $("<div>").get(0); while(subItems.length > 0) { var ul = $("<ul>").get(0); div.appendChild(ul); for(var i=0; i<subItems.length; i++) { ul.appendChild( $("<li>").text(subItems[i]).get(0) ); } subItems = items.splice(0, 5); }

这将创建一个包含n个ul标签的div,每个标签有5个li(或更少,具体取决于数据)

更改第6行以指向div标签。而且我不确定我们可以从您的示例中判断数据应该来自何处,因此您需要相应地更改项目和第11行。

答案 1 :(得分:1)

您可以使用模数运算符%来确定何时达到最大值,然后您需要为新的ul创建一个新的jQuery,然后附加它。

&#13;
&#13;
$(function(){
  var $container = $('.container'),
   el = 10,
   max = 5,
   i;  
  var newUl;
  for(i=0; i < el; i++){
   if(i%max==0) {
     newUl = $('<ul/>');
     $container.append(newUl);
   }
   $('<li />', { html : i }).appendTo(newUl)			
  }
});
&#13;
* {
  box-sizing: border-box;
}

body {
  background: #f2f2f2;
}

.wrapper {
  display: table;
  margin: 0 auto;
  padding: 10px;
  max-width: 600px;
  width: 100%;
  height: 100vh;
  border: 2px solid rgba(0, 0, 0, 0.2);
}
.wrapper .container {
  display: table-cell;
  vertical-align: bottom;
}
.wrapper ul {
  background: #c0c0c0;
  border: 1px solid #333;
  font-size: 0;
}
.wrapper ul:nth-of-type(odd) {
  direction: rtl;
}
.wrapper ul li {
  display: inline-block;
  font-size: 16px;
  width: 20%;
  padding: 10px;
  border: 1px solid #333;
  text-align: center;
  direction: rtl;
}

.status {
  position: fixed;
  left: 0;
  top: 0;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper"> 
	<div class="container"> 
		
	</div>
</div>
<div class="status"></div>
&#13;
&#13;
&#13;