javascript - jQuery width() 未在具有生成内容的 div 上返回正确的值

标签 javascript jquery

使用下面的代码,警报不会返回#main的实际大小,它总是返回#main的css宽度值,并删除%。所以在这种情况下,我在警报中得到 95。如果我警告parent().width(),我会得到100。

从 .get() 调用返回的数据是一个 ul,有时比 #main 宽,有时则不是。内容的宽度似乎与 .width() 返回的内容没有任何关系。

所以我的问题是,如何获得#main的真实像素宽度?

CSS:

#container {
    width: 100%;
}

#main {
    width: 95%;
    overflow: hidden; 
}

HTML:

<div id="conatiner">
    <div id="main"></div>
</div>

Javascript/jQuery:

$.get('page.php', function(result) {
    $('#main').html(result);
});
alert($('#main').width();

最佳答案

我在尝试实现 jquery.autogrow-textarea 时遇到了同样的问题用于内联编辑的文本区域。文本区域包含在尚未显示的 div 中(css display: none;)。在调试 .autogrow() javascript 代码时,我发现 jQuery 的 .width() 返回的是删除了“%”字符的百分比值,而不是计算出的宽度以像素为单位(例如 100 代表 100%,80 代表 80%)。

下面是演示此场景的 jsfiddle:http://jsfiddle.net/leeives/ujE6s/

为了解决这个问题,我在显示文本区域后立即将代码更改为 .autogrow() 。对 .width() 的调用是准确的。

我不确定您是否正在使用隐藏内容,但我想我会写下我的答案,以防其他人在搜索 jQuery 的 问题时偶然发现这一点(就像我一样)。宽度()

关于javascript - jQuery width() 未在具有生成内容的 div 上返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208951/

相关文章:

javascript - Extjs 3.4 Tree Grid 默认按指定列排序

javascript - 将第一个元素聚焦在新行上

jquery - 是否可以在 bootstrap daterangepicker 中删除上个月和下个月的日期?

javascript - 如何使用 jquery 创建 move 句柄

javascript - Angular 服务缓存一个值

javascript - 在 JavaScript 中连接字符串的问题

javascript - 当我从下拉列表中选择选项时,按钮应该会自动触发并生成唯一的 ID

javascript - 淡出背景 - 简单的 Jquery

asp.net - 弹出窗口中验证码加载问题

javascript - 如何在 Jade 中为每个项目呈现一个具有不同 javascript 函数的列表?