2 Stimmen

jQuery UI Dialog funktioniert nur beim ersten Aufruf

Ich habe ein einfaches HTML-Codefragment

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

Und eine einfache Jquery-Funktion für das Anklicken.

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" );
            }
        }
    });
}

Wenn ich zuerst klicke, funktioniert es, aber div "link_to_list" löschen und ich kann es nicht wieder aufrufen. Wie kann ich das umgehen?

0 Stimmen

There's nothing even in that <div> tag...put the </div> after </a> so the link is inside the <div>

0 Stimmen

@TrevorMA: Das Div ist so gestylt, dass es unsichtbar ist. Setzen Sie den Link hinein und der Link ist ebenfalls unsichtbar.

0 Stimmen

@TrevorMA Ich glaube nicht, dass er das tun will - die <div> wird als Dialog verwendet ...

3voto

Pointy Punkte 387467

I denken Das Problem könnte sein, dass Sie beim zweiten Klick versuchen würden, das Dialogfeld neu zu initialisieren, was (wenn ich mich richtig erinnere) nicht funktioniert. Stattdessen könnten Sie den Dialog zuerst einrichten und dann haben die Klick-Handler nur den Dialog öffnen.

$( "#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');
}

3voto

Mark Punkte 5580

$(this).dialog("zerstören")

Entfernen Sie die Dialogfunktionalität vollständig. Dadurch wird das Element wieder in den Zustand vor der Initialisierung versetzt.

$(this).dialog("schließen")

Schließen Sie das Dialogfeld

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

0voto

Darren Cato Punkte 1374

Marks Antwort funktioniert jedoch nicht, wenn Sie mit der Taste x schließen. Verwenden Sie nicht destroy. Setzen Sie autoOpen auf false, rufen Sie den Dialog auf und öffnen Sie ihn in einem separaten Aufruf.

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

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

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X