2013-10-10 4 views
0

Je suit l'initialisation du dialogue jQuery popUp, avec du contenu dynamique:Centre de dialogue jQuery popUp avec une largeur automatique et hauteur automatique

jQuery("#popUp").live("click", function (e) { 
    e.preventDefault(); 
    jQuery("<div></div>") 
     .addClass("dialog") 
     .attr("id", "popUpDialog") 
     .appendTo("body") 
     .dialog({ 
      title: jQuery(this).attr("data-dialog-title"), 
      close: function() { jQuery(this).remove(); }, 
      modal: true, 
      hide: { effect: "none", duration: 150 }, 
      show: { effect: "none", duration: 150 }, 
      width: 'auto', 
      height: 'auto', 
      position: { 
       my: 'center', 
       at: 'center', 
      of: jQuery(window) 
      } 
     }).load(this.href); 

    jQuery(".close").live("click", function (e) { 
     e.preventDefault(); 
     jQuery(this).closest(".dialog").dialog("close"); 
    }); 
}); 

});

Je suis désolé pour cette question plus simple, mais je ne peux pas placer la fenêtre contextuelle au centre de la page entière. Le problème est:

    position: { 
        my: 'center', 
        at: 'center', 
       of: jQuery(window)} 
+0

Position: { mon: 'centre', à: 'centre', de: jQuery (fenêtre) } supprimer ceci il par défault il montre la boîte de dialogue dans le centre –

Répondre

3

Le problème est dû au fait que la boîte de dialogue est positionnée avant le chargement de son contenu et que, par conséquent, sa taille change. Changer votre logique afin que le contenu est chargé en premier, puis instancier la boîte de dialogue:

jQuery('<div />', { 
    class: 'dialog', 
    id: 'popUpDialog' 
}) 
    .appendTo("body") 
    .load(this.href, function() { 
     // set up the dialog in the callback of the AJAX request... 
     jQuery(this).dialog({ 
      title: jQuery(this).attr("data-dialog-title"), 
      close: function() { jQuery(this).remove(); }, 
      modal: true, 
      hide: { effect: "none", duration: 150 }, 
      show: { effect: "none", duration: 150 }, 
      width: 'auto', 
      height: 'auto', 
      position: { 
       my: 'center', 
       at: 'center', 
       of: window 
      } 
     }) 
    }); 
+0

Je l'utilise beaucoup dans mon application (MVC) .On clic sur le bouton qui ont l'ID 'popUp' le contenu sera affiché dans popUp, comment je peux changer ma logique, puis-je utiliser la fonction SeTimeOut? – MDDDC

+0

Vous pourriez, vous auriez besoin de définir la position gauche à '(window.width/2) - (dialog.width/2)' et la même chose pour la position supérieure. –

0

Cela devrait être suffisant pour l'option de position:

position:'center' 

ça marche?

+0

non cela ne fonctionne pas, cela fonctionnera si je indiquerai la largeur et la taille, avec la largeur: automatique et la taille: l'automatique ne fonctionne pas ... – MDDDC

Questions connexes