jQuery UI 1.8.16 Диалог больше не отображается - PullRequest
1 голос
/ 28 октября 2011

Только что обновлен пользовательский интерфейс jQuery с 1.8.5 до 1.8.16, и модальные диалоговые окна, которые я успешно использовал в своем приложении, перестали неожиданно показывать, что означает, что наложение отображается правильно, но фактическое окно не отображается вообще.

Создание и использование диалога просто:

var dlg=$('<div></div>').dialog({modal:true,autoOpen:false});
dlg.html('some content');
dlg.dialog('open');

Раньше это работало нормально. Теперь я просто получаю оверлей, а не диалоговое окно.

Требуется, чтобы JS загружался нормально (один файл пользовательского интерфейса jQuery, содержащий все зависимости, плюс библиотека jQuery), а также CSS (с использованием темы Smoothness), проверено с помощью Firebug.

В консоли Firebug нет ошибок или предупреждений.

Единственное изменение, которое я внес в загруженный дистрибутив, было переименование некоторых файлов путем удаления номера версии и "ui", то есть jquery-ui-xyz.js становится jqueryui.js . Как я уже сказал, скрипты загружаются нормально.

Я видел несколько вопросов здесь, касающихся той же проблемы, но никакого реального ответа. Перед откатом или изменением моего ранее работающего кода, пожалуйста, дайте мне знать, если я что-то здесь упустил.

Большое спасибо.

1 Ответ

2 голосов
/ 30 октября 2011

Решено. Один из тех глупых случаев, когда очевидной проблемой является просто красная сельдь, а настоящая проблема лежит где-то еще.

То, что я сделал, изменил единственную переменную в моей инфраструктуре MVC, что привело к загрузке сценариев пользовательского интерфейса jQuery и других важных сценариев в разделе head вместо body раздел. Я сделал это непосредственно перед обновлением jQuery, и не тестировал эффект , предполагая, что ничего не изменится: что, я просто переместил сценарии, я получу ошибку, если что-то пойдет не так, я поймаю это потом.

Дело в том, один из этих сценариев содержит код выше . И теперь он загружен в head. Я должен предположить, что создание элемента div через JS в разделе head документа не будет работать, не так ли? И это тихий сбой, ошибка не выдается!

Затем я обновил jQuery и получил описанную выше проблему. Кроме того, меня сбило с толку отсутствие отчета об ошибке и тот факт, что обычные виновники (не должная загрузка скриптов и CSS) были здесь не виноваты.

С тех пор я выдернул свои волосы, пока не получил их сегодня вечером и не решил. Я заслуживаю того, чтобы не вносить постепенные изменения в проект, тестирование на каждом этапе, особенно. перед таким значительным капитальным ремонтом подрамника.

Итак, приносим извинения команде jQuery. Мой плохой.

TL; DR: Это не ошибка jQuery. Это было плохое развитие практики все время. Также убедитесь, что вы не создаете объект JQuery UI Dialog в разделе head вашей страницы (как бы глупо это не звучало).

...