此问题仅发生在IE8中,否则在Chrome,FF等中工作正常。问题是我试图通过根据需要加载HTML文件将大型项目分解为更小的模块。其中一个HTML文件有一个HTML表单作为其内容的对话框。以下是父文件中的代码:
$('#login').click(function(){
$('#login_dialog').load('html/login_dialog.html', function() {
$("#login_dialog").dialog("open");
});
});
对话框代码位于login_dialog.html文件中。点击后,它会加载文件并完成剩下的工作。非常简单,除IE8外,它按预期工作。 IE8中报告的错误是
cannot call methods on dialog prior to initialization; attempted to call method 'open'
现在,如果将整个login_dialog.html文件复制到父文件中而不是动态加载,那么即使在IE8中也是如此。有关修复此问题的任何想法我尝试了dialog_var = $(#login_dialog).dialog({....});然后按照本论坛另一篇文章的建议继续使用dialog_var.dialog(“open”)。那也行不通。
答案 0 :(得分:1)
IE通常执行后续语句的速度太快
尝试
$('#login').click(function(){
$('#login_dialog').load('html/login_dialog.html', function() {
setTimeout(function() {
$("#login_dialog").dialog("open");
},100);
});
});