Jquery Dialog show: слепо, скрыть: уронить;работает только один раз - PullRequest
0 голосов
/ 19 августа 2011

У меня есть следующий код:

$("#dialog").dialog({
    height: 360,
    width: 630,
    modal: true,
    autoOpen: false,
    show: 'blind',
    hide: 'drop',
    resizable: false,
    dialogClass: 'noFloat'
});

$("#openDiag").click(function() {

    $("#dialog").dialog('open');

    $.ajax({
        type: "POST",
        url: "setHsdSegment.jsp",
        dataType: "html",
        resizable: false,
        //data:"name="+name+"&age="+age,
        success: function(data) {
            $("#response").html(data);
        }
    });
});

Проблема, с которой я сталкиваюсь, заключается в том, что показ и скрытие работает только один раз.Если я снова нажму на кнопку (#openDialog), появится только полупрозрачный экран, а не диалоговое окно.

Самое смешное, что это происходит только тогда, когда скрытие - это «падение», а показ - что-то ещекроме «капли».Но когда шоу «бросай», а «скрывать» - это что-то еще, тогда все в порядке.

Должно ли шоу быть «уронить», если скрыть «уронить»?

РЕДАКТИРОВАТЬ: Это происходит только в IE.(как обычно IE вызывает проблемы.: D ... почему?)

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

Это известная ошибка в пользовательском интерфейсе jQuery: http://bugs.jqueryui.com/ticket/5615

Быстрое решение состоит в том, чтобы уничтожить и воссоздать диалог:

var $dlg = $("#dialog");
var dlgOptions = $dlg.dialog("option");
$dlg.dialog("destroy");
$dlg.dialog(dlgOptions);

Появляется, что диалог выходит изэкран и забывает вернуться в следующий раз, когда он показывается (если «show» не установлено как «drop», что делает прямо противоположное).

0 голосов
/ 19 августа 2011

Я нашел способ обойти это.Не уверен, что это лучший способ, но он работает.Это выглядит следующим образом:

 $("#openDiag").click(function(){
  $('#dialog').dialog('destroy');
   $("#dialog").dialog({
                    height: 360,
                    width: 630,
                    modal: true,
                    autoOpen: true,
                    show: 'slide',
                    hide: 'drop',
                    resizable: false,
                    dialogClass: 'noFloat',
                    buttons: { "Ok": function() { $(this).dialog("close"); 

                                                } }
                });

Похоже, для IE мне нужно уничтожить плагин диалога, прежде чем я создам новый.Вначале я держал «уничтожить», потому что хотел сохранить эффект закрытия.Чего мне не хватает, так это проверить, существует ли плагин, прежде чем я его уничтожу.Но все равно работает без ошибок;что я не знаю почему.

Но это все еще не отвечает на вопрос, почему проблема существовала в первую очередь, только для этой конкретной комбинации и только в IE.Может ли кто-нибудь сказать мне причину?

0 голосов
/ 19 августа 2011

В этой демонстрации все работает нормально: http://jsfiddle.net/william/mQkH7/

Возможно, попытайтесь обновить / понизить ваш jQuery UI.

...