2013-11-16 4 views
0

Эта проблема возникает только в IE8, в противном случае отлично работает в Chrome, FF и т. Д. Проблема в том, что я пытаюсь разбить большой проект на более мелкие модули, имея HTML файлы загружаются по мере необходимости. В одном из файлов HTML есть диалоговое окно с формой HTML в качестве его содержимого. Ниже приведен код из исходного файла:Диалог JQuery UI с загруженной формой динамически дает проблемы в IE8

$('#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»), как предлагается в другом сообщении на этом форуме. Это тоже не сработало.

ответ

1

IE обычно слишком быстро с выполнением последующих операторов

Попробуйте

$('#login').click(function(){ 
    $('#login_dialog').load('html/login_dialog.html', function() { 
     setTimeout(function() { 
      $("#login_dialog").dialog("open"); 
     },100); 
    }); 
}); 
+1

Пробовали даже за счет увеличения времени ожидания, но безрезультатно. Сообщает ту же ошибку, но ваше предложение, безусловно, полезно, поскольку устраняет одну возможность. – Sam