所以我需要做的是确保每个无序列表中至少有三个list-item元素。那么如何循环遍历ul元素并确保里面至少有三个li子元素。
如果只有一个李,我还需要两个。如果有两个li,我需要再添加一个。
HTML:
<ul class="list">
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
我需要这样做的原因是信息是通过WordPress循环输入的,如果它没有循环至少三个内容元素,我需要添加更多空的,直到它达到至少3。
感谢您的帮助。
答案 0 :(得分:3)
您可以定义一个变量,其中包含您希望每个li
包含的ul
的最大值,然后比较每个li
中的ul
个数量max_lis
用li
变量}来了解您要添加的额外ul
的更多内容,最后使用{{循环并将其添加到当前append
1}}。
希望这有帮助。
var max_lis = 3;
$('ul.list').each(function(){
var lis_length = $('li',this).length;
if( lis_length )
additional_lis = max_lis - lis_length;
else
additional_lis = max_lis;
for(i=0;i<additional_lis;i++)
$(this).append('<li style="color:red;">... NEW content</li>');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list">
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
答案 1 :(得分:1)
您可以使用从{ul。的当前数量for
开始的li
循环。
$('ul').each(function() {
var i = $(this).find("li").length;
for (i; i < 3; i++) $(this).append('<li>New item</li>')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list">
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
答案 2 :(得分:0)
var lists = $('ul');
for(var i = 0; i < lists.length; i++) {
var items = $('li', lists[i]);
if(items.length < 3) {
console.log(lists[i].id+ ' - add more list');
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list" id="list1">
<li>...content</li>
</ul>
<ul class="list" id="list2">
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list" id="list3">
<li>...content</li>
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list" id="list4">
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
&#13;
答案 3 :(得分:0)
您可以使用.filter()
过滤ul
元素少于3
li
的元素,创建一个3
减去.length
的元素选定li
,ul
元素数组中的.append()
子元素到ul
。
$("ul")
.filter(function(i, el) {
return $("li", this).length < 3
})
.each(function(i, el) {
$(this).append(Array(3 - $("li", el).length).fill("<li>...content</li>"));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<ul class="list">
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>
<ul class="list">
<li>...content</li>
<li>...content</li>
<li>...content</li>
</ul>