这是我的第一个jQuery代码。我希望我的ul元素与类“.topnav”具有width属性的值,它来自它包含的最宽度属性li元素。我有像这样的代码和li元素display:none
的css:
$(function(){
$('.topnav').each(function(){
$(this).attr('width', Math.max($(this).children().each(function(){$(this).attr('width')})))});
})
但这不起作用。有人可以帮忙吗?
答案 0 :(得分:2)
使用width([value])或outerWidth([value])来获取/设置宽度,而不是使用attr('width')。
代码中存在许多其他错误,您的$(this).children().each
不会返回宽度。坚持下去,让我快速甩掉一些东西,抓住它。
你走了:
var maxWidth = Math.max.apply(Math, $('.topnav > li').map(function(){ return $(this).width(); }).get());
$('.topnav').width(maxWidth);
map
函数将li数组转换为宽度数组。 get
将其转换为常规Javascript数组。然后应用函数max
传递它Math
作为第一个参数中的作用域和第二个参数中的数组。
答案 1 :(得分:0)
var maxwidth = 0;
$('.topnav').each(function(){
$(this).children().each(function(){
if($(this).width() > maxwidth){
maxwidth = $(this).width();
}
});
});
然后,您可以将.topnav
的宽度设置为maxwidth
。