从children元素中获取width属性

时间:2011-06-16 22:46:03

标签: jquery

这是我的第一个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')})))});
   }) 

但这不起作用。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

嗯,很难理解你的问题。你的意思是,你希望你的ul宽度与最宽的li相同吗?如果是这样,你想要包含li的填充/边框/边距吗?

使用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