10
votes

jQuery-ui fermer la boîte de dialogue modale sur fond de fond

Je joue avec JQuery Ui, et j'aime comment cette démo fonctionne: http://jqueryui.com/demos/dialog/#modal-message

Cependant, lorsqu'une boîte de dialogue apparaît, le seul moyen de le fermer est de cliquer sur l'une des touches d'interface à l'intérieur de la boîte de dialogue - Comment pourrais-je étendre ceci pour fermer n'importe quelle boîte de dialogue donnée lorsque l'utilisateur clique sur la couche d'arrière-plan recouvrant sur la couche d'arrière-plan. la page?

J'ai vu où les utilisateurs peuvent frapper "Escape", mais franchement, je ne pense pas que la plupart des utilisateurs penseront à faire cela (je n'ai pas jusqu'à ce que je l'ai vu comme une option), mais cela pourrait survenir à eux de cliquer à l'extérieur. Du message.

Y a-t-il un événement / une option qui me manque, je peux appuyer sur?


1 commentaires

J'ai trouvé la réponse à Stackoverflow.com/Questtions / 1675893 / ... pour mieux fonctionner que ceux énumérés ici.


5 Réponses :


17
votes

Cela devrait faire le truc: xxx

cliquer sur .ui-widget-superposition déclenchera le clic sur le bouton Fermer

Acclamations

g.


0 commentaires

14
votes

J'ai trouvé le précédent pour être finky parfois, voici une solution simple: xxx


3 commentaires

Vous savez que je devais poser des questions sur vivre quelques jours après cela, heh.


Comment appliqueriez-vous l'arrière-plan Cliquez sur l'environnement IE6? Cela échoue de mon côté pour le moment. J'utilise le dernier [github] github.com/jquery/jquery-ui/commit/ ...


Live est mieux selon mes tests!



3
votes

Juste pour ajouter au cas où une personne exécute dans ce problème - si vous avez plusieurs boîtes de dialogue empilées les unes des autres, les éléments suivants fermeront juste em> la boîte de dialogue qui est en haut:

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


0 commentaires

1
votes

Il s'agit de la méthode préférée à utiliser lors de la gestion de versions plus récentes de JQuery.

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


0 commentaires

13
votes

Celui-ci fonctionnera certainement, car cela importe lorsque la superposition est dans le DOM ou non.

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


0 commentaires