2009-06-08 12 views
19

Il codice seguente funziona correttamente solo per l'evento del primo clic. Tuttavia per ogni clic successivo non succede nulla. L'ho provato su firefox, vale a dire7 ma è rimasto lo stesso. Mi sto perdendo qualcosa?Apre la finestra di dialogo modale di Jquery all'evento click

<script type="text/javascript"> 
$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog(); 
     return false; 
    }); 
}); 
</script>  
</head><body> 
    <div id="dialog" title="Dialog Title" style="display:none"> Some text</div> 
    <p id="dialog_link">Open Dialog</p> 
</body></html> 

risposta

27

provare

$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog('open'); 
     return false; 
    }); 
}); 

c'è un arg aperto nell'ultima parte

+0

Spiacente, non fortuna :( ho messo un avviso ("KKH"); prima di $ ('# finestra') finestra di dialogo();.. e si tratta bene, ma nessuna finestra ancora – Sumanta

+2

controllare il vostro riferimenti sul clientide, io uso firebug per verificare che non ci siano 404s –

+1

la finestra di dialogo viene caricata sul caricamento della pagina anche prima dell'evento click ... – user20358

11

Prova questa

$(function() { 

$('#clickMe').click(function(event) { 
    var mytext = $('#myText').val(); 


    $('<div id="dialog">'+mytext+'</div>').appendTo('body');   
    event.preventDefault(); 

     $("#dialog").dialog({     
      width: 600, 
      modal: true, 
      close: function(event, ui) { 
       $("#dialog").remove(); 
       } 
      }); 
    }); //close click 
}); 

E in HTML

<h3 id="clickMe">Open dialog</h3> 
<textarea cols="0" rows="0" id="myText" style="display:none">Some hidden text display none</textarea> 
+0

Ottima soluzione - Mi è piaciuto! – Guy

+0

Sì, la funzione .remove() è la risposta alle mie pene. Quando stavo chiamando .close() stava causando il problema. –

+0

+1 Nice Solution Bro – RajeshKdev

5
$(function() { 

$('#clickMe').click(function(event) { 
    var mytext = $('#myText').val(); 

    $('<div id="dialog">'+mytext+'</div>').appendTo('body');   
    event.preventDefault(); 

     $("#dialog").dialog({     
      width: 600, 
      modal: true, 
      close: function(event, ui) { 
       $("#dialog").hide(); 
       } 
      }); 
    }); //close click 
}); 

Meglio usare .hide() anziché .remove(). Con .remove() restituisce undefined se si è premuto il link una volta, quindi si chiude il modal e se si preme di nuovo il collegamento modale, esso ritorna non definito con .remove.

Con .hide() non funziona e funziona come un gioco da ragazzi. Ty per il frammento nella prima mano!

+0

Avevo bisogno di questo nel mio codice, grazie per aver segnalato questo! – Charx

+0

+1 per utile soln. :) – RajeshKdev

2

Se si vuole mettere un po 'di pagina nella finestra di dialogo, allora è possibile utilizzare questi

function Popup() 
{ 
$("#pop").load('login.html').dialog({ 
height: 625, 
width: 600, 
modal:true, 
close: function(event,ui){ 
    $("pop").dialog('destroy'); 

     } 
}); 

} 

HTML:

<Div id="pop" style="display:none;"> 

</Div> 
0

Prova ad aggiungere questa riga prima della riga di dialogo.

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

Questo metodo ha funzionato per me. Sembra che il comando "chiudi" faccia scoppiare nuovamente la finestra di dialogo con solo il .dialog().

Usando il codice come un esempio, sarebbe andata a come questo (si noti che potrebbe essere necessario aggiungere di più per il codice per poter dare un senso):

<script type="text/javascript"> 
$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
$("#dialog").dialog("open");   
$('#dialog').dialog(); 
     return false; 
    }); 
}); 
</script>  
</head><body> 
    <div id="dialog" title="Dialog Title" style="display:none"> Some text</div> 
    <p id="dialog_link">Open Dialog</p> 
</body></html> 
1

può essere utile ...:)

$(document).ready(function() { 
    $('#buutonId').on('click', function() { 
     $('#modalId').modal('open'); 
    }); 
}); 
Problemi correlati