Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery计数li';每个ul中都有_Jquery - Fatal编程技术网

jQuery计数li';每个ul中都有

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')

我试图根据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').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”,实际上效率更高(奇怪!)。