显示jquery对话框

时间:2011-08-04 08:06:26

标签: jquery-ui jquery-plugins jquery

this site Firefox上显示jQuery对话框(等待)但在IE8中它没有显示jQuery对话框(等待)

$("#wait").dialog({resizable:false,width:100,modal:true,height:100 });
$("#wait").siblings(".ui-dialog-titlebar").hide(); 

var  certification = "";
var address;
var  idCompany="821225021";

for (var  i = 0; i < 10; i++)                                 
{ 
    idCompany =idCompany + i.toString();
    idCompany=idCompany + ".png";
    address="../Image/CertificationCompany/"+idCompany; 

    if (UrlExists(address))
    {
        certification +="<a>";
        certification +="<img style='width:40px;height:40px;' src='../Image/CertificationCompany/" + idCompany + "'  />";
        certification +="</a>";                                                                                            
    }

    idCompany="821225021";
}

$("#contentCertification").html(certification);
$("#wait").dialog('close');

1 个答案:

答案 0 :(得分:0)

同样的事情发生在Chrome中,但我认为这可能是一个速度问题,因为浏览器快,显示然后隐藏对话框。

如果您在Chrome中调试并逐步执行JavaScript并在创建dialog()时中断,则会按预期显示。

您需要在最后一次XMLHTTPRequest完成后关闭对话框,您可以通过执行XMLHTTPRequest对象的readyState来执行此操作(请参阅MSDNMDN文档)。< / p>

也就是说,由于您已经在使用jQuery,我强烈建议您对所有请求使用jQuery .get()方法,这会在执行异步HTTP请求时混淆浏览器之间的差异(并且很多其他浏览器差异!)。然后,您将获得符合跨浏览器的代码一个干净的回调机制,例如:

for (var i = 0; i < 10; i++) { 
    address="../Image/CertificationCompany/"+ idCompany + i.toString() + ".png";

    $.get(address, function(data) {
        var certification = $('<a/>')
            .append('<img style="width:40px;height:40px;" src="' + address + '"/>');

        $("#contentCertification").append(certification);

        if ($('#contentCertification a').length == 10) {
            $("#wait").dialog('close');
        }
    });
}