使用max-height进行调整大小后,无法使用Jquery获取图像宽度

时间:2012-12-22 01:29:08

标签: javascript jquery image-resizing

我有一组动态获取的图像。对于我正在应用最大高度的每个图像,我将其用于重新调整大小的目的。

我有一个jquery re-size函数:

//调整我的照片

function resizeMyImg(objct, containerWidth, containerHeight) {
   var width   = $(objct).width();   // I try alerting here and get a 0 answer
   if (width < containerWidth) {
       var percentageToAdd = ((100 * width) / containerWidth) + 100;
       $(objct).css({ maxHeight: percentageToAdd + "%" });
   }
}

我正在尝试将此调整大小功能应用于我的图片:

$(document).ready(function () { 
    $(".photoAlbum").find("img").each(function () {
        var myImage2 = $(this);
        myImage2.load(function () {
            alert(myImage2.height());   // I try alerting here and also get a 0 answer
            resizeMyImg(myImage2, 240, 240);
        });
    });
});

这是我在我的网页中使用的HTML,希望有所帮助:

<div style="padding-top: 0px;" id="photosHere">

                    <div class="photoAlbum">

                        <img alt="" src="/Uploads/553290_471992686161625_498413822_n867.jpg" style="max-height: 100%;">

                    </div>

                    <div class="photoAlbum">

                        <img alt="" src="/Uploads/484524_430827793626240_991120671_n575.jpg" style="max-height: 100%;">

                    </div>

                    <div class="photoAlbum">

                        <img alt="" src="/Uploads/553290_471992686161625_498413822_n717.jpg" style="max-height: 100%;">

                    </div>

                    <div class="photoAlbum">

                        <img alt="" src="/Uploads/me993.jpg" style="max-height: 100%;">

                    </div>

                    <div class="photoAlbum">

                        <img alt="" src="/Uploads/me759.jpg" style="max-height: 100%;">

                    </div>

                </div>

我的问题是我无法获得图像的宽度,我总是得到0而不是实际的宽度。但是,如果我测试图像,使用firebug,我得到正确的宽度。

N.B:有时候我会得到正确的答案,然后我刷新并再次获得0。有什么建议吗?我花了好几个小时才感到沮丧..

2 个答案:

答案 0 :(得分:3)

今天我正在编写一个jQuery插件,我遇到了同样的问题,所以我最终引用了DOM元素。尝试

$(this)[0].height代替myImage2.height()

$(this)[0].width代替myImage2.width()

答案 1 :(得分:0)

我认为正确的宽度可能来自于摆弄萤火虫,并且刷新会清除所有的摆弄。

你有没有尝试过:

 alert(myImage2.outerHeight());

在您显示的第二个代码和

var width = $(objct).outerWidth
你的第一个代码中的

? (http://api.jquery.com/outerWidth/