【问题标题】:jQuery outerWidth Gives a Value of Zero (dynamically loaded content)jQuery outerWidth 给出零值(动态加载的内容)
【发布时间】:2012-08-19 01:56:33
【问题描述】:

我正在尝试将图像添加到页面末尾,获取它的高度和宽度,并使用这些值来计算页面上另一个图像的高度/宽度(这是用于在线方程我正在构建的编辑器)。

我正在使用 CSS 设置高度,并希望自动为我缩放宽度。我需要在 jquery 中执行此操作,还是浏览器会自动为我执行此操作?

这是我正在尝试做的事情类型的示例。

$( 'body' ).append( '<img class="letter" src="my_image.png">' );
var new_element_height = $('.letter').last().outerHeight();
var new_element_width = $('.letter').last().outerWidth();
$('.letter').last().remove();
alert( new_element_height );
alert( new_element_width );

我的 CSS 类似于:

.letter {
    height: 50px;
}

new_element_height 给我 50px,new_element_width 给我 0px。我猜这是因为我正在动态加载这些图像,然后尝试获取高度/宽度。

我希望高度为 50 像素,宽度正确缩放到该高度,然后将这些值放入 new_element_height/new_element_width 变量中。

【问题讨论】:

  • 图片自动调整img标签大小?,body有固定宽度还是最大宽度?

标签: jquery css ajax image


【解决方案1】:

您似乎正在尝试在加载图像之前获取图像尺寸。见JavaScript: Know when an image is fully loaded

查看http://jsfiddle.net/eBrnu/2/的工作演示@尝试将高度设置为不同的值,您会看到宽度也会发生变化。

此外,您可能希望至少在 CSS 中设置 visibility: hidden,这样图像就不会闪烁,但仍会占用空间。

【讨论】:

  • 我想出的解决方案是将页面上的所有图像都放在 html 中,并将 css 设置为可见性:隐藏。然后,我通过为每个图像使用唯一的 id 来访问我需要的特定高度和宽度。不幸的是,我必须加载所有这些图像(可能会有 100 到 150 张图像,任何给定的用户只能使用其中的 10 到 20 张,但无法分辨是哪些)。我想我可以通过使用 CSS sprites 来加快加载时间。
猜你喜欢
  • 2011-06-14
  • 2016-12-15
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 2012-06-06
相关资源
最近更新 更多