Проблема с диалоговым окном JQuery UI: Close удаляет div

Я хочу показать всплывающий экран на моей странице с помощью виджета JQuery UI Dialog.

Для этого у меня на странице есть <div class="popup-placeholder">. На самом деле на странице их несколько (если это имеет значение для решения)

При нажатии кнопки я инициализирую диалог и «открываю» его. Инициализация всплывающего окна происходит внутри щелчка действия, потому что он должен выполнить вызов Ajax для получения содержимого всплывающего окна. (Я попытался убрать инициализацию события щелчка, но это не сработало $('div.popup-placeholder').dialog();)

    var popupContext = $('#' + contextControl.id + ' > .popup-placeholder');
    popupContext.html(formHtml);

    $(popupContext).dialog({
        bgiframe: true,
        modal: true,
        autoOpen: false,
        closeOnEscape: false,
        dialogClass: '',
        draggable: true,
        position: 'center',
        resizable: false,                                    
        width: 600
    });

При нажатии кнопки действия форма показывает и делает то, что должна. Теперь у меня есть близкая ссылка во всплывающем окне, КОТОРАЯ НЕ ДИАЛОГОВАЯ КНОПКА, а просто еще одна ссылка с привязанным к ней событием. Он делает это ...

$('#popup-placeholder-61').dialog('close');

где # popup-placeholder-61 совпадает с $ (popupContext)

Проблема, с которой я столкнулся сейчас, заключается в том, что при закрытии всплывающего окна та же кнопка действия не отображает всплывающее окно снова. Проблема, похоже, в том, что <div class="popup-placeholder"> был удален из разметки.

Я пробовал решения на следующей странице, но не помогло - Диалоговое окно JQuery закрывается в StackOverflow

Итак, мне нужна дополнительная помощь


person Zuber    schedule 12.02.2010    source источник
comment
Включите дополнительный код, в частности значение переменной formHtml. Включение разметки в образец файла поможет людям воспроизвести вашу проблему и предоставить полное решение, соответствующее вашей проблеме.   -  person Bernhard Hofmann    schedule 12.02.2010
comment
FormHtml будет иметь базовую разметку Html и тег привязки, который при нажатии закрывает диалоговое окно.   -  person Zuber    schedule 12.02.2010


Ответы (4)


Немного потревожившись, я нашел лучшее решение. Пожалуйста, используйте строку ниже вместо диалога ('закрыть')

$('#popup-placeholder-61').dialog("destroy");

Это позволит div сохранить свою позицию

person Bhavikk R    schedule 09.07.2015

Моя проблема была решена, но я выясню, почему мой предыдущий подход не сработал. То, что я делал раньше, заключалось в том, что у меня было несколько заполнителей с разными идентификаторами, и я делал только один из них диалогом. Я использовал несколько селекторов JQuery, чтобы выбрать соответствующий div для диалогового окна, и у меня возникли проблемы, описанные выше.

Единственное изменение, которое я сделал сейчас, это то, что у меня есть единственный div, который действует как заполнитель. И теперь это работает. Он также отлично инициализировался за пределами моего мероприятия. Так, может быть, это как-то связано с моими селекторами? Я попробую еще, и если что-то найду, опубликую это как продолжение.

Спасибо.

person Zuber    schedule 12.02.2010

Попробуйте извлечь код инициализации из события щелчка, возможно, при попытке заново привязать все, диалоговое окно не открывается вторым щелчком ... У меня была аналогичная проблема, которую я «решил», создав разметку для диалоговое окно каждый раз, когда диалоговое окно должно было открываться.

Бит ajax вашей проблемы не сдерживается, чтобы вы могли выполнить инициализацию из события щелчка, просто загрузите свой контент ajax в событие щелчка и покажите диалоговое окно с диалоговым окном ('открыть').

person JoseMarmolejos    schedule 12.02.2010

Основная проблема заключалась в том, что я искал div диалога не в том месте.

См. Этот пост для более подробной информации ...

Диалог JQuery - div исчезает после инициализации

person Zuber    schedule 16.02.2010