jQuery img.attr('width') returns zero.. IE7

jQuery img.attr('width') returns zero.. IE7

本文关键字:returns zero IE7 width attr jQuery img      更新时间:2023-09-26

适用于除<= IE7..之外的所有浏览器

查看此示例,在iE7中为http://jsfiddle.net/uVRbG/1。

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

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

我不明白,我只是想要硬编码的值…对象在当时是否可见并不重要。还有其他方法来获取宽度和高度吗?

注意:我需要在文档的宽度和高度。准备好了,我不能等待所有这些图像加载,然后使用image .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'));

谢谢,韦斯利

你可以只是使用jquery.hide()而不是显示无,并存储在一个变量的宽度隐藏之前?

.width()

可能会帮助你,但为什么IE7有这个问题,我认为这可能是与你的选择器。

我在IE中总是遇到:first:last伪选择器的麻烦,它可能只是没有选择图像。.attr()display:none没有任何bug。

希望有帮助

编辑:试着把这个添加到你的小提琴中:

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

有点粗糙的解决方法,但可能有效。我试过了,不能用IE7测试,当我加载jsfiddle>:(

)时,它会抛出一个脚本错误

编辑:最后,使用regex:

var imgWidth = $('#test').html().search(/width=['"''][0-9]+/);
alert(imgWidth);

尝试使用

.width()

而不是http://jsfiddle.net/uVRbG/3/

试试这个方法:用visibility:hidden;position:absolute代替display:none。然后加载图像并将其定位到不碍事的位置,这样就可以计算宽度了。

当您想稍后显示图像时,请同时将其更改为position:relative

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

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