Диалоговое окно JQuery UI - * Диалог не функция * ошибка
Я разрабатываю сайт с использованием pinax. В одном из моих шаблонов я пытаюсь открыть простое диалоговое окно jquery. Однако я все время получаю ошибку "Диалог не функция" javascript. Я использую jquery 1.2.6 и jquery-ui 1.6. Мой javascript и HTML выглядят следующим образом:
<html>
<head>
<link type="text/css" href="/site_media/smoothness/ui.all.css" rel="stylesheet" />
<script src="/site_media/jquery.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.core.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.draggable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.resizeable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.dialog.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#dialogbox').dialog();
});
</script>
</head>
<body>
<div id="dialogbox" title="dialog title">
<p>Test dialog</p>
</div>
</body>
</html>
Может кто-нибудь объяснить, почему это происходит?
Ответы
Ответ 1
Я попытался дублировать вашу ошибку как с помощью общедоступных версий Google, так и путем загрузки устаревшей версии (1.6) с сайта пользовательского интерфейса jQuery и вручную, включая файлы. Не вызвало проблем (http://jsbin.com/uloqi, чтобы увидеть, как он работает).
Итак, это означает, что одно из следующих может решить вашу проблему:
- Используйте инструмент Firebug для Firefox, чтобы проверить, что каждый JS файл включен.
- Убедитесь, что на странице нет другой JS, которая может вызвать ошибку.
- Убедитесь, что у вас есть правильные версии загруженных файлов.
Я не знаю, что еще сказать вам, так как код, который вы вставили, в паре с правильными файлами, отлично работает.
Ответ 2
У меня была такая же проблема, как и описанная выше (окно сообщений открывается только один раз). Проблема была в том, что html в ящике сообщений также загружает jquery. Поскольку я не нуждаюсь в нем, я мог бы удалить его без проблем. В противном случае вам, возможно, придется немного решить проблему.
Ответ 3
При определенных обстоятельствах вы можете получить эту ошибку, если одновременно загружается мультиплексор и другая версия JQuery.
В моем случае у меня есть страница ASP, в которой используется мастер.
Мой мастер включал JQuery 1.4.2.min
Моя страница aspx Я включил JQuery 1.7.2.min
Когда функции JQuery вызывались из элемента управления, он запутался в том, какой JQuery использовать, даже если этот script может указать, что JQuery был загружен (он может отображать версию JQuery), ему не удалось найти какие-либо функции JQuery.
Когда я удалил локальное включение JQuery 1.7.2.min из моего aspx файла и обновил мою версию с 1.4.2.min до 1.7.2.min, проблема исчезла.
Ответ 4
Ответ Дуга Найнера действительно помог. Мое дело было немного сложнее, но все равно доходит до той же точки:
Я открыл диалоговое окно с страницы A, которое загружает страницу B следующим образом:
$('#MyDiv').dialog({
autoOpen: false
})
$("#MyDiv").load("PageB.aspx", function () {
$("#MyDiv").dialog("open");
});
Проблема состоит в том, что в обеих страницах A и B был включен jQuery. Помните: если вы загружаете другую страницу в диалоговом окне, ей не нужно включать те же js.
Ответ 5
Как уже объяснялось, вы, вероятно, переопределите существующие библиотеки.
Один из способов борьбы с ним - обеспечить загрузку правильных файлов.
Другой способ - вставить iframe между диалогом и содержимым в диалоговом окне. Iframe обрабатываются браузером как отдельная страница со своими скриптами. Таким образом, сценарии содержания "поверх" iframe будут отделены от скриптов диалога "под" iframe.
Ответ 6
У меня тоже есть эта проблема, и единственное решение, которое работает для меня, - это сохранить ссылку на диалог, например:
var confirmDialog = $( "#dialog-confirm" ).dialog({
autoOpen: false
});
$("#test").click(function () {
confirmDialog.dialog('open');
});
В противном случае все, что я пробовал, не удалось с помощью
.dialog() is not a function error
Надеюсь, что эта помощь.
Ответ 7
У меня была та же проблема. Mine было само по себе связано с обновлением пользовательского интерфейса jQuery с 1.11.4 до 1.12.1. Я установил обновление, используя NuGet, и NuGet удалил старую ссылку 1.11.4 из моего проекта, но никогда не добавлял новую ссылку на проект.
Запуск локально приложения отлично работал, но при его развертывании новый файл 1.12.1 никогда не делал его с публикацией. Надеюсь, это поможет кому-то другому.