У меня есть приложение на jquery 1.5 с диалогами, работающими нормально. Хотя у меня много обработчиков .live, я изменил это на .on. Для этого мне нужно обновить jquery (теперь 1.8.3 jquerui 1.9.1).
Теперь у меня есть: Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
Ниже приведен код:
Javascript
var opt = {
autoOpen: false,
modal: true,
width: 550,
height:650,
title: 'Details'
};
$(document).ready(function() {
$("#divDialog").dialog(opt);
$("#divDialog").dialog("open");
...
HTML-код
<div id="divDialog">
<div id="divInDialog"></div>
</div>
Есть идеи, почему это может происходить?
jquery
dialog
jquery-ui-dialog
core-chain.io
источник
источник
Если вы не можете обновить jQuery и получаете:
Вы можете обойти это так:
Или, если вы управляете представлением и знаете, что никакие другие диалоги не должны использоваться на всей странице, вы можете сделать:
Я бы рекомендовал делать это только в том случае, если использование
closest
вызывает проблемы с производительностью. Вероятно, есть другие способы обойти это без глобального закрытия всех диалогов.источник
Я получил эту ошибку, когда обновил только библиотеку jquery, не обновляя библиотеку jqueryui параллельно. Я использовал jquery 1.8.3 с jqueryui 1.9.0. Однако, когда я обновил jquery 1.8.3 до 1.9.1, я получил указанную выше ошибку. Когда я закомментировал оскорбительные
.close
строки метода, он выдал ошибку о том, что не нашел.browser
в библиотеке jquery, которая устарела в jquery 1.8.3 и удалена из jquery 1.9.1. Итак, в основном библиотека jquery 1.9.1 была несовместима с библиотекой jquery ui 1.9.0, несмотря на то, что на странице загрузки jquery ui говорилось, что она работает с jquery 1.6+. По сути, при попытке использовать разные версии этих двух ошибок возникают незарегистрированные ошибки. Если вы используете версию jquery, которая поставляется вместе с загрузкой jqueryui, я уверен, что у вас все будет хорошо, но когда вы начинаете использовать разные версии, вы сбиваетесь с проторенного пути и получаете подобные ошибки. Таким образом, эта ошибка связана с несовпадением версий (во всяком случае, в моем случае).источник
Итак, вы используете это:
и если вы откроете частичное представление MVC в диалоге, вы можете создать в индексе скрытую кнопку и событие щелчка JQUERY:
затем внутри частичного представления html вы вызываете триггер кнопки, например:
до встречи.
источник
Если вы хотите открыть диалоговое окно сразу после инициализации диалогового окна или когда страница готова, вы также можете установить для параметра
autoOpen
значениеtrue
в объекте параметров диалогового окна:Таким образом, вам не нужно вызывать диалог `$ (" # divDialog "). (" Open ");
Когда объект диалога инициализируется, диалог открывается автоматически.
источник
Новая версия пользовательского интерфейса jQuery не позволит вам вызывать методы пользовательского интерфейса в диалоге, который не инициализирован. В качестве обходного пути вы можете использовать приведенную ниже проверку, чтобы увидеть, жив ли диалог.
источник
Это также некоторая работа:
источник
Мне просто пришлось добавить на страницу ScriptManager. Проблема решена.
источник
В моем случае проблема заключалась в том, что я позвонил
$("#divDialog").removeData();
как часть сброса данных моей формы в диалоговом окне.Это привело к тому, что я уничтожил структуру данных с именем,
uiDialog
что означало, что диалоговое окно пришлось повторно инициализировать.Я заменил
.removeData()
более конкретные удаления, и все снова заработало.источник
Мой случай другой, он терпит неудачу из-за объема ' this ':
источник
Я получил это сообщение об ошибке, потому что у меня был тег div в частичном представлении вместо родительского представления
источник