我无法让jquery .width()工作

时间:2013-09-09 17:40:11

标签: jquery html css

我有这个HTML代码:

<div class="tab">
    <a href="#">SPECS</a>
    <div class="sub-menu">
        <a href="#">Specs 1</a>
        <a href="#">Specs 2</a>
        <a href="#">Specs 3</a>
    </div>
</div>
<div class="tab">
    <a href="#">GALLERY</a>
    <div class="sub-menu">
        <a href="#">Gallery 1</a>
        <a href="#">Gallery 2</a>
        <a href="#">Gallery 3</a>
    </div>
</div>

我正在尝试做的是,我不想在CSS中指定.sub菜单的宽度,我希望它是动态的,不同于div的内容。我尝试用jQuery做这个:

var width = $(".sub-menu").width();
$(".sub-menu").css("width", width);

但它不起作用,它给所有的.sub-menu divs宽度为0px。我想要使​​用.each函数,所以每个.sub菜单都会得到它的宽度并应用为css。我希望我很清楚。

感谢。

4 个答案:

答案 0 :(得分:1)

将此添加到您的CSS:

.sub-menu {display:inline-block}

这将使菜单占用其内容所需的宽度,不再是。

答案 1 :(得分:1)

问题是width()返回一个数字。但CSS规则需要Npx。使用此:

var width = $(".sub-menu").width() + "px";
$(".sub-menu").css("width", width);

答案 2 :(得分:0)

<script>
jQuery(document).ready(function(){
    $( ".sub-menu" ).each(function( index ) {
        width=$(this).width();
        $(this).css('width',width+'px');
    });
});
</script>

答案 3 :(得分:0)

$(function() {

  var smWidth = $(".sub-menu").width();

  $(".sub-menu").css({ width: smWidth + 'px' });

});