jQuery img.attr('width')返回零.. IE7

时间:2011-09-30 13:14:39

标签: javascript jquery image internet-explorer-7 attr

适用于除< = IE7 ..

之外的所有浏览器

检查此示例,iE7中的http://jsfiddle.net/uVRbG/1

当我从对象中删除样式显示:none时,它可以正常工作:

http://jsfiddle.net/uVRbG/2/

我不明白,我只是想要硬编码的值...当时对象是否可见无关紧要..有没有其他方法可以获得宽度和高度?

注意:我需要document.ready的宽度和高度,我不能等待加载所有这些图像,然后使用img.width();

HTML:

<div id="test" style="display:none">
<img src="http://neuro.amygdala.net/wp-content/uploads/2007/11/i-stress-test.gif" width="100" height="100" />
</div>

<div id="result"></div>
<div id="result2"></div>

Javascript:

$('#result').html($('#test img:first').attr('width'));
$('#result2').html($('#test img:first')[0].getAttribute('width'));

谢谢, 韦斯利

5 个答案:

答案 0 :(得分:1)

您可以使用jquery.hide()而不是display none,并在隐藏隐藏之前将宽度存储在变量中吗?

答案 1 :(得分:1)

尝试此解决方法:使用visibility:hidden;position:absolute代替display:none。然后将图像加载并放置在一起,这样就可以计算宽度。

如果您想稍后显示图片,请同时将其更改回position:relative

http://jsfiddle.net/uVRbG/7/

答案 2 :(得分:0)

尝试使用

.width()

代替

http://jsfiddle.net/uVRbG/3/

答案 3 :(得分:0)

.width()

可能对您有所帮助,但至于为什么IE7有这个问题,我认为这可能与您的选择器有关。

我总是遇到IE中:first:last伪选择器的问题,可能就是没有选择图像。 .attr() afaik没有任何错误。

希望这有帮助

编辑: 尝试将此添加到您的小提琴:

display:none

一些hacky解决方法但可能有效。我已经尝试过并且无法使用IE7进行测试,当我加载jsfiddle&gt;时会抛出脚本错误:(

编辑: 最后一招,一个正则表达式:

var imgWidth = $($('#test').html()).attr('width');
alert(imgWidth);

答案 4 :(得分:0)

在获得宽度之前,您必须等待图像加载!