基于集合中lis数的li的动态宽度

我想根据列表中有多少li(s)将动态宽度设置为li(s)。 例如,如果有18个li(s)。 每个宽度应为100%/ 18 = 5.55%。 如果我有3组不同的ul,我该怎么办? 我试着用这个。

$('.lesson-nav ul li').width( 100 / $(".lesson-nav ul li").length + '%' ); 

由于未知原因:此脚本的宽度为120%,而只有1 li,当有18 lis时为27.55%。

根据文件 :

.css(width)和.width()之间的区别在于后者返回无单位像素值(例如,400),而前者返回单位完整的值(例如,400px)。

所以你应该使用css(width)

 $('.lesson-nav ul li').css("width", 100 / $(".lesson-nav ul li").length + '%' ); 

虽然我无法重现你的120%问题。 要回答你关于“如果我有3组不同的ul应该怎么做”的问题,假设你有3个不同的.lesson-nav有列表……就像这样:

的jsfiddle

 $('.lesson-nav').each( function() { $lis = $(this).find('ul li'); $lis.width( 100 / $lis.length + '%' ); }); 

如果你在单个.lesson-nav有多组ul ,那么你可以修改你的选择器有点像在这个JSFiddle中看到的

如果width()由于某种原因不起作用,你也可以在这里用css("width",...)替换width()