我想调整大于窗口的图像大小,但是当我尝试获取图像大小时,我一直保持0宽度和高度。我读到某处可能是因为图像不一定是在(文档)上加载的.ready所以图像函数应该在(window).load下,但它没用。当涉及到jquery和javascript时,我是一个真正的新手,所以我可能做错了。
这是我的javascript文件的外观:
//<!--
$(document).ready(function(){
...
});
$(window).load(function () {
$(".lightbox img").each(function() {
var width = $(this).width();
var max_width = $(window).width()-30;
var height = $(this).height();
var max_height = $(window).height()-30;
if(width > max_width || height > max_height) {
if(height > width) {
height = max_height;
width = Math.ceil(width / height * max_height);
} else {
width = max_width;
height = Math.ceil(height / width * max_width);
}
}
$(this).attr("width",width);
$(this).attr("height",height);
});
});
//-->
提前致谢。
答案 0 :(得分:0)
尝试使用$(this).css("width")
代替attr
答案 1 :(得分:0)
看看this project在加载图片时提供回调。
你可能没有维度的另一个原因是一个不可见的元素(父或自我)。
答案 2 :(得分:0)
当窗口加载时,图像尚未加载。在完全加载之前,JavaScript无法获取图像的尺寸,在此之前,您获得的计算值为零。
考虑到这一点,重复循环可能有所帮助。 (警告:尚未测试)
var width = 0;
while (!width) {
width = $(this).width();
}
注意无限循环。