2

我正在尝试获取图像的实际宽度...这是有问题的图像

<img src="upload/<?php echo $array['image'] ?>" height="200" class="active" />

这就是我在 jQuery 中尝试过的

$(window).bind('load', function() {  
    var img_width = $("#slideshow").find("img").width();
    $("#slideshow img").css("width", img_width);
    alert(img_width);
});

对于我尝试过的每个图像,警报都会返回 255,这是 div 幻灯片的宽度。这些图像的高度均为 200,它们将具有不同的宽度,我的问题是,我如何获得这些宽度?

谢谢,J

4

4 回答 4

1

这应该使用所有图像的宽度填充一个数组:

$(window).bind('load', function() {  
    var img_widths = [];
    var imgs = $("#slideshow").find("img");
    imgs.each(function() {
      img_widths.push($(this).width());
    });
});
于 2012-04-04T18:26:17.510 回答
0

我将为您提供您没有要求的答案-但我认为更好的解决方案。

只是因为我看到您在图像本身中使用 PHP - 为什么不使用 PHP 编写图像大小信息。它更好,不等待加载。

<?php 
// path from document root seems to work best for me
list( , , , $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'] . "/upload/".$array['image']);
?>
<img src="upload/<?php echo $array['image'] ?>" <?php echo $attr; ?> class="active" />
于 2012-04-04T18:37:20.397 回答
0

如果#slideshow包含多个img,您的调用$("#slideshow").find("img").width();将只返回第一个img宽度,在这种情况下,它必须是 200

于 2012-04-04T18:22:47.020 回答
0
var $imgs = $('img');
$imgs.load(function(){
    console.log($(this).width());
});
于 2012-04-04T18:29:24.803 回答