Диалоговое окно jQuery UI работает только при первом вызове - PullRequest
2 голосов
/ 25 марта 2011

У меня есть простой фрагмент HTML-кода

<div style="display:none;" id="link_to_list"></div>
 <a href="#" onclick="save_onclick()">
     Back to List
 </a>

И простая функция jquery для обработки кликов.

function save_onclick() {
    $( "#link_to_list" ).dialog({
        title:'Are you sure you don\'t want to save?',
        resizable: false,
        height:140,

        modal: true,
        buttons: {
            Ok: function() {
                window.location.href = "findUsers";
                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
}

Когда я впервые нажимаю, это работает, но div "link_to_list" стирается, и я не могу вызвать его снова Как я могу обойти это?

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

$ (это) .dialog ( "уничтожить")

Полностью удалите функциональность диалога. Это вернет элемент в его состояние перед инициализацией.

$ (это) .dialog ( "закрыть")

Закрыть диалоговое окно

http://jqueryui.com/demos/dialog/

3 голосов
/ 25 марта 2011

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

$( "#link_to_list" ).dialog({
    title:'Are you sure you don\'t want to save?',
    resizable: false,
    height:140,
    autoOpen: false,

    modal: true,
    buttons: {
        Ok: function() {
            window.location.href = "findUsers";
            $( this ).dialog( "close" );
        },
        Cancel: function() {
            $( this ).dialog( "close" );
        }
    }
});

function save_onclick() {
  $('#link_to_list').dialog('open');
}
0 голосов
/ 06 июня 2011

Ответ Марка работает, но не работает, если вы закрываете кнопку x. не используйте уничтожить. установите autoOpen в false, сделайте вызов диалоговому окну, затем откройте в отдельном вызове

    $( "#dialog" ).dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode"
    });

    $( "#opener" ).click(function() {
        $( "#dialog" ).dialog( "open" );
        return false;
    });

http://jqueryui.com/demos/dialog/#animated

...