Не удается получить ajax - высоту и ширину загруженного изображения через jquery

Я загружаю изображение извне через ajax, например...

function load_image(image_href) {

    var img = new Image();
    $(img).load(function () { 
        $(this).hide(); $('#a_box').append(this); 
        $(this).fadeIn(); 
        }, gallery_image_load_complete()
    ).error(function () {
    }).attr('src', image_href);

}

function gallery_image_load_complete() {
    conslole.log('complete')

     $('#a_box img').height(); //wrong numbers, as though the image is partially loaded
     $('#a_box img').width(); //wrong numbers
}

Проблема в том, что я пытаюсь получить высоту и ширину загруженного изображения внутри функции Gallery_image_load_complete(). По какой-то причине высота и ширина этого изображения отключены, так как изображение не полностью загружено.

Может кто-нибудь помочь мне, пожалуйста?


person MintDeparture    schedule 21.04.2010    source источник
comment
Первым параметром метода загрузки должен быть URL-адрес, который, похоже, отсутствует. Могли бы объяснить проблему.   -  person JohnFx    schedule 22.04.2010


Ответы (3)


Gallery_image_load_complete() необходимо вызывать в обработчике события загрузки:

function load_image(image_href) {

    var img = new Image();
    $(img).load(function () { 
        $(this).hide(); $('#a_box').append(this); 
        $(this).fadeIn(); 
        gallery_image_load_complete(); // now inside the load event handler
    }).error(function () {
    }).attr('src', image_href);

}
person Jeffery To    schedule 22.04.2010

Вы ведь знаете, что атрибуты высоты и ширины сообщают вам размер объекта изображения в DOM, а не самих базовых файлов изображений, верно?

person JohnFx    schedule 21.04.2010
comment
но у меня нет ничего, изменяющего размер изображения, никакого css, скрипта или каких-либо ограничений на него. Его высота в доме должна быть его фактической высотой. - person MintDeparture; 22.04.2010

У меня сейчас нет под рукой кода, но когда мне понадобился размер произвольного изображения, чтобы решить, как его представить, я предварительно загружаю скрытый элемент и получаю размер элемента @loaded. затем делайте, что хотите, и размещайте изображение там, где оно необходимо.

работает хорошо.

person Sky Sanders    schedule 22.04.2010