Мне нужно было использовать метод setTimeout , чтобы изменение размера работало для меня.
Я делаю ajax-вызов, чтобы получить изображение, жду 2 секунды и устанавливаю colorbox для этого изображения.
По окончании я изменяю размер colorbox с размером изображения.
Без тайм-аута это не сработало бы для меня, потому что картинка не была загружена полностью и получила width = 0, height = 0 как размер картинки.
$.get('/component/picture/getPicture.do?pictureId=' + id,
function(data) { //callback function
$('#pictureColorbox').html(data); //set picture inside div on this page
setTimeout(function(){ // set timeout 2 sec
//create colorbox for inline content "#pictureColorbox" and call showPicture on complete
$.colorbox({href:"#pictureColorbox", inline:true, title:'', initialWidth:900, initialHeight:600, scrolling:false, onComplete: function(){showPicture(id);}});
}, 2000);
});
function showPicture(id) {
var x = $('#' + id + " #picture").width();
var y = $('#' + id + " #picture").height();
$.colorbox.resize({innerWidth:x, innerHeight:y});
}