jQuery计数li';每个ul中都有
我试图根据LI的数量为LI元素添加宽度,例如jQuery计数li';每个ul中都有,jquery,Jquery,我试图根据LI的数量为LI元素添加宽度,例如 第一个李有5个孩子,所以孩子的宽度应该是20% 第二个李有4个孩子,所以孩子的宽度应该是25% 第三个李有6个孩子,所以孩子的宽度应该是19% 我在这方面做了以下工作: $(document).ready(function(){ var count = $('#main-menu li ul > li').size(); var width = 100/count; $('header nav#main-menu li ul li')
- 第一个李有5个孩子,所以孩子的宽度应该是20%
- 第二个李有4个孩子,所以孩子的宽度应该是25%李>
- 第三个李有6个孩子,所以孩子的宽度应该是19%
$(document).ready(function(){
var count = $('#main-menu li ul > li').size();
var width = 100/count;
$('header nav#main-menu li ul li').css("width",width+"%");
});
问题是它要计算所有元素的总数(包括子元素)。这可能吗?这应该可以做到:
$(document).ready(function(){
$.each($('#main-menu li ul'), function() {
var children = $(this).find(">li");
var count = children.length;
var width = 100/count;
children.css("width", width + "%");
});
});
$('#main-menu li ul').each(function() {
var $children = $(this).children('li');
var count = children.length;
if (count) {
$children.css('width', 100 / count + '%');
}
});
size()
是一种不推荐使用的方法。请共享html示例var count=$('#主菜单li ul>li')。长度代码>4是25%,5是20%,6怎么会变成19%?@adeneo只是数学不好,我想…我想Alnitak指的是,如果你有嵌套列表,你会用find()得到它们。啊,那么。find(“>li”)会很容易解决:)答案改变。这不是我的观点-.find()
将继续沿着ul li
元素树递归(如果它有多个级别),并错误地计算孙子辈等以及子辈。如果您特别想要直系后代,请使用.children
而不是。找到足够公平的观点,改为“>li”,实际上效率更高(奇怪!)。