JQuery UI Dialog не будет закрываться - PullRequest
3 голосов
/ 30 сентября 2011

На моей веб-странице есть кнопка, которая открывает модальное диалоговое окно jQuery.Код, который запускается при нажатии кнопки, выглядит следующим образом:

$('#main-onoffline-container').append('<div id="dialog-modal-a"></div>');

    $("#dialog-modal-a").dialog({
        title:'Add Tags'
        , autoOpen: false
        , modal: true
        , height: 540
        , width:700
        , close: function (ev, ui) { alert('closing'); }
        ,open: function() {
            $("#dialog-modal-a").html('Some html will go here')
        }
    });

    $("#dialog-modal-a").dialog("open");

Как видите, я добавляю div в DOM, а затем вызываю метод диалогового окна для вновь добавленного div.

Диалоговое окно открывается нормально и отображает HTML и кнопку закрытия X.Однако, когда я нажимаю кнопку X, чтобы закрыть диалоговое окно, оно не закрывается.Консоль показывает следующую ошибку из jquery-1.6.4.min.js:

Uncaught RangeError: Maximum call stack size exceeded

Кто-нибудь знает, в чем проблема?

ОБНОВЛЕНИЕ: После длительногосеанс Я обнаружил, что порядок определенных библиотек js влияет на это:

Если я включаю файлы следующим образом, возникает проблема:

<script src="../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.7.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>

Если я включил файлы следующим образом, то проблемаисчезает:

<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.7.min.js" type="text/javascript"></script>

Это кажется действительно странным - я подумал, что вы должны включить основной материал jQuery прямо вверху файла?

(валидат lib - плагин Jörn Zaefferer)

Я поднял другой вопрос, чтобы решить эту проблему: Библиотека jQuery включает порядок причин ошибки

Ответы [ 4 ]

1 голос
/ 25 октября 2011

Проблема возникла из-за конфликта с библиотекой js - см. Мои последние комментарии в основном вопросе

0 голосов
/ 01 сентября 2012

У меня была похожая ошибка, .dialog ('destroy') помог мне.Возможно, все еще существует несоответствие версии js.

0 голосов
/ 30 сентября 2011

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

Создать контейнер диалога в HTML:

<div id="dialog-modal-a"></div>

Инициализировать его на $ (). Ready () (который скрывает его по умолчанию)когда autoOpen: false), затем открыть его при загрузке события или страницы:

$().ready(function() {
    $("#dialog-modal-a").dialog({
        title:'Add Tags',
        autoOpen: false,
        modal: true,
        height: 540,
        width:700,
        close: function (ev, ui) { alert('closing'); }
    });

    $('#somethinkToClick').click(function() {
        $('#dialog-modal-a').html('some html');
        $("#dialog-modal-a").dialog("open");
    });

    /* OR
    $('#somethinkToClick').click(function() {
        $('#dialog-modal-a').html('some html');
        $("#dialog-modal-a").dialog("open");
    });
    */
}
0 голосов
/ 30 сентября 2011

Попробуйте вытащить из функции $ .dialog обработку события закрытия:

$( ".selector" ).bind( "dialogclose", function(event, ui) {
  ...
});
...