Jquery Dialogo – div scompare dopo l’inizializzazione

JQuery finestra di Dialogo mi sta dando un sacco di dolore ultimamente.
Ho il seguente div che voglio essere spuntato. (Ignorare che le classi non mostrare le virgolette nella sintassi)

TABLE class=widget-title-table border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
    <TD class=widget-title><SPAN class=widget-title>Basic Info</SPAN></TD>
    <TD class=widget-action>
    <DIV id=edit-actions jQuery1266325647362="3">
        <UL class="linkbutton-menu read-mode">
            <LI class="control-actions">
                <A id="action-button" class="mouse-over-pointer linkbutton">Delete this                 stakeholder</A> 
            <DIV id="confirmation" class="confirmation-dialog title=Confirmation">
                Are you sure you want to delete this stakeholder? 
            </DIV>

</LI></UL></DIV></TD></TR></TBODY></TABLE>

JQuery per questo è …

$(document).ready(function() {

$('#confirmation').dialog({
    bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false,
    draggable: true, position: 'center', resizable: false, width: 400, height: 150
    });

});

E la finestra di dialogo ” apri autenticata da

var confirmationBox = $('#confirmation',actionContent);
if (confirmationBox.length > 0) {


    //Confirmation Needed
    $(confirmationBox).dialog('option', 'buttons', {
        'No': function() {
            $(this).dialog('close');
        },
        'Yes': function() {
            $('ul.read-mode').hide();
            $.post(requestUrl, {}, ActionCallback(context[0], renderFormUrl), 'json');
            $(this).dialog('close');
        }            
    });

    $(confirmationBox).dialog('open');

}

Inizia il problema di inizializzazione.
Quando il documento viene caricato, la <div #confirmation> viene eliminato dal markup!
Ho avuto un problema simile in precedenza, ma non riesco ad utilizzare la soluzione qui.
Su questa pagina posso avere più PopUp div.

Quando ho aggiunto l’inizializzazione in appena prima di aprirlo; il modulo spuntato. Ma dopo che ho chiuso, il div viene rimosso; quindi non sono in grado di vedere il popup.

Hai guardato la console di firebug per vedere se ci sono errori?
Nessun errore visualizzato sulla console
Perché non basta usare jquery ui
Sto usando JQuery UI; almeno questo è ciò che penso. .una finestra di dialogo() è in JqueryUI quadro.

OriginaleL’autore Zuber | 2010-02-16

5 risposte

  1. 5

    La ragione che si sta vedendo rimuovere #conferma è perché $("#foo").dialog() si sposta #pippo da ovunque nel DOM di fondo del documento all’interno del wrapper elementi che crea la finestra di dialogo per lo styling che sono inizialmente nascoste. Resta inteso che le finestre di dialogo sono nascosti fino all’apertura.

    Grazie. Ho appena realizzato che. Penso che il problema è che sto cercando un div di nuovo nel mio ‘actionContext’. Ma Jquery è stato spostato div ora al di fuori del campo di applicazione. Così, ID è l’unico modo per aprire la finestra di dialogo?

    OriginaleL’autore

  2. 3

    Bene. Penso di aver inchiodato con l’aiuto da voi ragazzi.

    Alcuni “auto-definito” fatti su di dialogo che so ora (si Prega di correggere se sbaglio):

    1. Quando un <div> viene inizializzato come una finestra di dialogo, viene rimosso dalla sua posizione originale e spostato il <body> elemento in un <div class="ui-dialog">. Così ‘naturalmente’ scompare.

    2. Per selezionare la finestra di dialogo, è ora bisogno di un identificatore univoco. Può essere il id nella maggior parte dei casi, o di alcuni altri attributi sul div che lo rende unico sulla pagina.

    3. La finestra di markup viene creato ogni volta che la finestra viene inizializzato. Così, nel caso di chiamate AJAX se uno già esistente, di dialogo è avviato, vi saranno mostrati anche il popup più di una volta (come molte volte è stato reinizializzato). Per risolvere questo problema, ho eliminato la finestra di dialogo esistente marcature prima reintializing. Ho dovuto fare questo, perché il mio AJAX risposta può avere alcune finestre di dialogo, che devono essere iniziati.

      function InitializeConfirmationDialog() {
          $('div.confirmation-dialog').each(function() {
          var id = $(this).attr("id");
          if ($('div.ui-dialog-content[id="' + id + '"]').length > 0) {
              $('div.ui-dialog-content[id="' + id + '"]').parents('div.ui-dialog:first').html("").remove();                
          }
          $(this).dialog({
              bgiframe: true, modal: true, autoOpen: false, closeOnEscape: false,
              draggable: true, position: 'center', resizable: false, width: 400, height: 150
          });
      
      
      });

      }

    OriginaleL’autore

  3. 2

    nel mio caso, il semplice ” return false;’ in funzione a scatto ha fatto il trucco:

      $("#buttonIdThatOpensTheDialogWhenClicked")
             .button()
             .click(function () {
                    $("#myDialog").dialog("open");
                    return false;
             });
      });    

    OriginaleL’autore

  4. 0

    Sei sicuro che uno e solo un div con id “conferma”? Id duplicati non ammessi.

    Non JQuery Finestra di lavoro di ID di solo? Non si può fare qualcosa come $(‘div.popup”).una finestra di dialogo({..}) ? Ora come ora, sono sicuro che la pagina ha un unico “conferma”

    OriginaleL’autore

  5. 0

    Approvato risposta lavorato anche per me. Stavo usando:

    $('.myLink').click(function(){
        $(this).next().dialog(...)
    });

    e non c’era dopo aver cliccato la prima volta.

    Ora sto usando l’ID direttamente:

    $("#myId").dialog(...)

    e, ovviamente, non importa dove il dialogo si sposta su questa pagina troverà.

    OriginaleL’autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *