2011-01-04 17 views
11

estoy jugando con jQuery UI, y me gusta cómo funciona esta demo: http://jqueryui.com/demos/dialog/#modal-messagejQuery-UI cerca de diálogo modal en el fondo, haga clic en

Sin embargo, cuando un cuadro de diálogo aparece, la única manera de cerca que está haga clic en uno de los botones de la interfaz dentro del cuadro de diálogo: ¿cómo podría extender esto para cerrar un cuadro de diálogo dado cuando el usuario hace clic en la capa de fondo que cubre la página?

Vi donde los usuarios pueden presionar "escape", pero francamente no creo que la mayoría de los usuarios piensen hacer esto (no lo hice hasta que lo vi como una opción), sin embargo, podría ocurrirles hacer clic lejos del mensaje.

¿Existe un evento/opción que me falta que pueda acceder?

+2

he encontrado la respuesta a http://stackoverflow.com/questions/1675893/jquery-close-dialog-on-click-anywhere funcione mejor que los que se muestran aquí. – Nils

Respuesta

17

Que debe hacer el truco:

$(".ui-widget-overlay").click(function(){ 
    $(".ui-dialog-titlebar-close").trigger('click'); 
}); 

Haga clic en .ui-widget-overlay activará el clic en el botón de cierre

Saludos

G.

+0

¡Muy bien, gracias! –

14

he encontrado el anterior a ser meticuloso a veces, aquí hay una solución simple:

$(".ui-widget-overlay").live('click', function(){ 
    $(".ui-dialog-titlebar-close").trigger('click'); 
}); 
+0

Sabes que tuve que preguntar sobre la vida unos días después de esto, je. –

+0

¿Cómo aplicaría el clic de fondo en el entorno IE6? Está fallando de mi lado en este momento. Estoy usando la última [Github] https://github.com/jquery/jquery-ui/commit/04667b15180ddbbc88af9a0fe30ace91aef2ae15 – KidCache

+0

en vivo es mejor de acuerdo con mis pruebas! – Keltex

3

sólo para añadir en caso de que alguien de encontrarse con este problema - si tiene varios cuadros de diálogo apilados uno encima del otro, entonces el siguiente cerrará simplemente el diálogo que está en la cima:

$(".ui-widget-overlay").live("click", function() { 
      $(".ui-dialog-titlebar-close", $(this).prev()).trigger('click'); 
     }); 
1

Este es el método preferido para usar cuando se trata de versiones más nuevas de Jquery.

$(".ui-widget-overlay").on("click", function(){ 
    $(".ui-dialog-titlebar-close").trigger('click'); 
}); 
12

Esta definitivamente va a funcionar, ya que es importante cuando la capa está en el dom o no.

$(document).on('click', '.ui-widget-overlay', function(){ 
    $(".ui-dialog-titlebar-close").trigger('click'); 
}); 
Cuestiones relacionadas