2009-06-08 12 views
19

El siguiente código funciona bien solo para el primer evento de clic. Sin embargo, para cualquier clic posterior no ocurre nada. Probé esto en firefox, ie7 pero sigue igual. ¿Me estoy perdiendo de algo?Abra el cuadro de diálogo modal de Jquery al hacer clic en evento

<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> 

Respuesta

27

tratar

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

hay un arg abierta en la última parte

+0

En este momento no hay suerte :( pongo una alerta ("kkh"); antes $ ('# de diálogo') de diálogo();.. y viene bien, pero todavía no hay ninguna ventana – Sumanta

+2

comprobar su referencias en el lado del cliente, uso firebug para verificar que no haya 404s –

+1

el diálogo se carga en la carga de la página incluso antes del evento de clic ... – user20358

11

probar este

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

Y en HTML

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

Gran solución - ¡Me gustó esto! – Guy

+0

Sí, la función .remove() es la respuesta a mis problemas. Cuando estaba llamando .close() estaba causando el problema. –

+0

+1 Solución agradable 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 
}); 

Es mejor usar .hide() en lugar de .remove(). Con .remove() devuelve indefinido si ha presionado el enlace una vez, luego cierre el modal y si vuelve a presionar el enlace modal, regresa indefinido con .remove.

Con .hide() no funciona y funciona como una brisa. Ty por el fragmento en la primera mano!

+0

Necesité esto en mi código, ¡gracias por señalar esto! – Charx

+0

+1 para solvencia útil. :) – RajeshKdev

2

Si usted quiere poner alguna página en el diálogo a continuación, puede utilizar estos

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

Trate de añadir esta línea antes de la línea de diálogo.

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

Este método funcionó para mí. Parece que el comando "cerrar" desordena la apertura del diálogo nuevamente con solo .dialog().

Usando el código de ejemplo, sería ir en como esto (tenga en cuenta que puede que tenga que agregar más a su código para que tenga sentido):

<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

puede ser útil ...:)

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