在jQuery .load()内容完全就绪后执行javascript函数

时间:2013-10-02 15:29:35

标签: javascript jquery modal-dialog

我有一个模态框,我填充了使用ajax jQuery .load()函数加载的内容。主要的问题是,只有在ajax内容(例如:图像,文本等)完全加载到隐藏模态之后,我才能执行另一个函数。

例如:我需要将模态框置于其宽度和宽度的中心位置。像这样的高度:

    var modalbox = $('.modalbox');

        function centermodal(a){                    

            overlayWidth = a.width(),
            overlayHeight = a.height();

            a.css({                     
                'margin-top':'-'+overlayHeight/2+'px',
                'margin-left':'-'+overlayWidth/2+'px'
            }); 

            a.show(); //show the box                    

        }

然后我在加载中执行此函数,但如果它包含图像或任何额外内容,它将不会计算模态的正确高度:

modalbox.load('page1.html','',function(){
    centermodal(modalbox);
});

我相信我需要创建某种加载器或在显示之前检查加载的内容。也许有人可以提出解决方案?

谢谢。

1 个答案:

答案 0 :(得分:0)

jQuery Deferred对象是此作业的工具。当AJAX调用完成时,使用deferred.done()函数调用函数。