2009-06-13 8 views
2

J'ai une boîte de dialogue JQuery que j'ouvre et ferme dynamiquement. Tout fonctionne correctement, sauf que la position du dialogue n'est pas mémorisée après sa fermeture puis sa réouverture.La boîte de dialogue JQuery UI peut-elle mémoriser sa position entre l'ouverture et la fermeture?

La taille est conservée mais la position ne l'est pas.

J'ai essayé de m'accrocher à l'événement 'Open' mais il semble que la position soit réinitialisée par l'interface utilisateur de JQuery après le repositionnement manuel de l'élément.

Le maintien de la taille de la boîte de dialogue est-il possible? Je pense certainement que ça devrait l'être.

+0

Pouvez-vous fournir du code ou un exemple de lien? – bendewey

+0

Vous voulez dire http://jqueryui.com/demos/dialog/? –

+0

Oui - Boîte de dialogue JQuery UI. Désolé si ce n'était pas clair. – berko

Répondre

8

Vous pouvez utiliser la boîte de dialogue jQuery UI Dialog "beforeclose" pour stocker la position et la taille. Vous pouvez définir la position et la taille en utilisant la méthode "option".

Voici ce qui fonctionne actuellement pour moi.

$(function() { 
    $("#dialog").dialog({ 
     beforeclose: function(){ 
      $(this).dialog('option', 'position', [$(this).offset().left, $(this).offset().top]); 
      $(this).dialog('option', 'width', $(this).width()); 
      $(this).dialog('option', 'height', $(this).height()); 
     } 
    }); 
}); 

$ ('# boîte de dialogue') de dialogue ('ouvert')

+0

J'ai déjà essayé cette suggestion. Lorsque je définis la position en utilisant les options, elle ne semble pas être reconnue. Soit je fais quelque chose de mal (tout a l'air ok) ou les options sont surchargées par le contrôle. – berko

+0

J'ai mis à jour la réponse avec le code testé. Avoir un autre regard s'il vous plaît. – tom

-1

Jetez un oeil à jquery changeset. Vous trouverez également un correctif pour ce

+0

Lien est maintenant rompu, pourquoi a-t-il jamais été lié à une adresse IP directe? –

1

Vous pouvez remplacer la méthode standard à proximité faux retour sur « beforeclose » et en utilisant jquery pour cacher la boîte de dialogue:

$.ui.dialog.defaults.beforeclose = function() { 
    $(this).closest('.ui-dialog').hide(); 
    return false; 
}; 

et cette réouverture:

$('#list').closest('.ui-dialog').show(); 
Questions connexes