JQuery UI dialog - * диалог не функция * ошибка

Я разрабатываю сайт с помощью 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>

может кто-нибудь объяснить, почему это происходит?

7 ответов


Я попытался дублировать вашу ошибку как с помощью общедоступных версий google, так и путем загрузки устаревшей (1.6) версии с сайта jQuery UI и вручную, включая файлы. Ни один из них не вызвал проблемы (http://jsbin.com/uloqi чтобы увидеть его работу).

Итак, это означает, что одна из следующих может решить вашу проблему:

  1. используйте такой инструмент, как Firebug для Firefox, чтобы проверить, что каждый файл JS включен.
  2. убедитесь, что нет другого JS на странице, которая может вызвать ошибку.
  3. убедитесь, что у вас есть правильные версии загруженных файлов.

Я не знаю, что еще сказать вам, так как код, который вы вставили, в паре с правильными файлами, работает отлично.


У меня была та же проблема, что и описанная выше (messagebox открывается только один раз). Проблема заключалась в том, что html в messagebox также загружает jquery. Поскольку он мне не нужен, я могу удалить его без проблем. В противном случае вам, возможно, придется закрепить проблему немного дальше.


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

в моем случае у меня есть страница ASP, которая использовала мастер. Мой мастер включал JQuery 1.4.2.минута На моей странице aspx я включил JQuery 1.7.2.мин

когда функции JQuery были вызваны из элемента управления, он запутался в том, какой JQuery использовать, поэтому, хотя этот скрипт может заявить, что jQuery был загружен ( он может отображать версию JQuery), он не удалось найти функции JQuery.

когда я удалил свой локальный JQuery 1.7.2.минимальное включение из моего файла aspx и обновил мою мать с 1.4.2.мин до 1.7.2.мин, проблема исчезла.


ответ Дуга найнера действительно помог. Мой случай был немного сложнее, но все же доходит до того же момента:

Я открыл диалоговое окно со страницы A, которое загружает страницу B следующим образом:

$('#MyDiv').dialog({
    autoOpen: false
})
$("#MyDiv").load("PageB.aspx", function () {
    $("#MyDiv").dialog("open");
});

проблема в том, что обе страницы A и B включали jQuery. Имейте в виду: если вы загружаете другую страницу в диалоговое окно, ей не нужно включать тот же js.


Как уже объяснялось, вы, вероятно, переопределяете существующие библиотеки.

один из способов справиться с этим-обеспечить загрузку правильных файлов.

другой способ-вставить iframe между диалогом и содержимым в диалоговом окне. Фреймы обрабатываются браузером как отдельная страница со своими скриптами. Таким образом, скрипты содержимого "поверх" iframe будут отделены от скриптов диалога "под" iframe.


у меня тоже есть эта проблема, и единственное решение, которое работает для меня, - это сохранить ссылку на диалог, например:

var confirmDialog = $( "#dialog-confirm" ).dialog({
    autoOpen: false
});
$("#test").click(function () {
    confirmDialog.dialog('open');
});

в противном случае все, что я пробовал, не удалось с

.dialog() is not a function error
надеюсь, что это поможет.

У меня была та же проблема. Мой был сам нанесен из обновления пользовательского интерфейса jQuery с 1.11.4 до 1.12.1. Я установил обновление с помощью NuGet, и NuGet удалил старую ссылку 1.11.4 из моего проекта, но никогда не добавлял новую ссылку на проект.

запуск локально приложение отлично работало, но при его развертывании новый файл 1.12.1 никогда не делал этого с публикацией. Надеюсь, это поможет кому-то еще.