Javascript 如何使jquery div替换立即生效

Javascript 如何使jquery div替换立即生效,javascript,jquery,Javascript,Jquery,我有一个javascript函数,它动态创建一个图像,然后在div中或在单独的页面上显示该图像。 由于图像创建需要几秒钟的时间,因此我希望显示一条简单的“请稍候”消息,以便用户知道正在发生什么事情,为此,我将用一些文本替换最初为空的div的内容 $('#chartImage').html('Please wait...'); 这本身就可以很好地工作-单击触发链接时,div内容会立即显示。问题是,当我在后面添加实际的图像创建代码时,“请稍候”直到图像创建完成后才会出现,而且只出现在一瞬间,所以它

我有一个javascript函数,它动态创建一个图像,然后在div中或在单独的页面上显示该图像。 由于图像创建需要几秒钟的时间,因此我希望显示一条简单的“请稍候”消息,以便用户知道正在发生什么事情,为此,我将用一些文本替换最初为空的div的内容

$('#chartImage').html('Please wait...');
这本身就可以很好地工作-单击触发链接时,div内容会立即显示。问题是,当我在后面添加实际的图像创建代码时,“请稍候”直到图像创建完成后才会出现,而且只出现在一瞬间,所以它有点毫无意义

是否有类似于刷新的方法来确保所有操作在继续之前都已生效? 或者,如果有更好的方法来做这件事,我很高兴听到它

-------------编辑-----------------

以下是我正在做的更完整的描述,使用open flash chart制作图像:

function createChartImage(chartid)
{
    $('#chartImageDiv'+chartid).html('Please wait...');

    ofc = findSWF("ofc_chart_"+chartid);
    x = ofc.post_image( getUploadChartURL(chartid), 'doneChartUpload', false );

    setTimeout("",1000); //allow some time for upload to complete

    window.location.href = getViewChartImageURL(chartid);
}
“请稍候”似乎在最后一行之前立即生效。如果我在此时再次更改div的内容,“请稍候”根本不会显示

(根据我正在使用的图表的文档,上传完成后应该调用函数“doneChartUpload”,这样就不需要设置超时,但我花了很长时间试图让它工作,甚至从下面的页面逐字复制代码,都没有用。)
BlockUI是用于以下情况的好工具:。在这两种情况下(使用BlockUI或滚动您自己的),首先触发“等待”代码,运行图像生成器,然后在加载图像后消除等待效果。

发生这种情况是因为图像尚未加载,并且浏览器加载图像需要一段时间才能显示

您可以尝试使用jquery.load()方法为像这样加载的映像事件添加回调(假设包含映像的div具有id#imageContainer):

$('#imageContainer img').load(函数(){
//卸下电源,请稍候
});

通过评估您的代码,我肯定会将其拆分:

function generateChartImageProcess(chartid){
    displayLoader();
    createChart(chartid);
}

function createChart(chartID){
    ofc = findSWF("ofc_chart_"+chartid);
    x = ofc.post_image( getUploadChartURL(chartid), 'doneChartUpload', false );

    setTimeout("",1000); //these two lines here to be replaced by your chart generations complete process
    window.location.href = getViewChartImageURL(chartid);
}

function displayLoader(){
    $('#chartImageDiv'+chartid).html('Please wait...');
}

function chartGeneratedComplete(arguments){
    //TODO
}

您可以发布一些标记和代码,以便我们可以看到您的事件序列吗?在整个原始onClick调用返回之前,似乎没有任何方法使操作生效,因此这不是完全正确的答案,但它使我走上了正确的轨道。我用的setTimeout是错误的,setTimeout(“,1000”)如上所述基本上什么都不做,甚至没有像我想的那样插入暂停。所需要的是像setTimeout(“chartGenerationComplete”,1000)这样的窗口。location.href=。。。;在chartGenerationComplete函数中。