2010-11-02 18 views
1

J'ai une boîte de dialogue jQuery qui charge son contenu par ajax après son ouverture.faire manuellement jQuery boîte de dialogue vérifier si le redimensionnement est nécessaire

Voir ce JSFiddle (le contenu n'est pas chargé par ajax mais ajouté après ouverture, ce qui est suffisant pour montrer mon problème).

html:

<div id="test">test</div> 

js:

$("#test").dialog({ 
    minHeight:100, 
    maxHeight:200, 
    width:300, 
    open: function(){ 
     $(this).html("test<br /><br />test<br />" + 
        "<br />test<br /><br />test" + 
        "<br /><br />test<br /><br />" + 
        "test<br /><br />test<br />" + 
        "<br />test<br /><br />test"); 
    } 
}); 

Quand il est ouvert, il ne reste pas fidèle à son maxHeight jusqu'à ce que vous redimensionnez la boîte de dialogue. Y at-il une sorte de méthode resize que je peux appeler après avoir ajouté du contenu à la boîte de dialogue?

Je préfère ne pas avoir à déterminer manuellement si un redimensionnement est nécessaire et à quelle hauteur car il est presque déjà intégré dans le plugin ui.

Répondre

0

JSFiddle exemple.

Pas exactement la solution élégante que j'espérais mais jusqu'à présent cela semble fonctionner.

Si quelqu'un a une meilleure solution, je serai heureux de l'entendre.

1

Placez le code html dans un div réel sur le webapge, puis utilisez le dialogue sur ce div. Ou changer la hauteur (et d'autres options) après initialisation ... de jquery docs:

//getter 
var width = $(".selector").dialog("option", "height"); 
//setter 
$(".selector").dialog("option", "height", 460); 
+0

Je sais que cela fonctionne, mais je veux être en mesure de modifier le contenu après l'ouverture de la boîte de dialogue. –

+0

@ red-x modifier la hauteur après init - voir edit – NimChimpsky

+0

@NimChimpsky Je sais comment régler manuellement la hauteur, mais comment puis-je savoir quelle hauteur je devrais lui donner? –

0

Réglage de la maxHeight dans la fonction ouverte semble faire l'affaire:

$("#test").dialog({ 
    minHeight:100, 
    width:300, 
    open: function(){ 
     $(this).html("test<br /><br />test<br /><br />test<br /><br />test<br /><br />test<br /><br />test<br /><br />test<br /><br />test<br /><br />test"); 
     $(this).parent().css("height", "auto"); 
     $(this).css("maxHeight", 200); 
    } 
}); 

EDIT: Il apparaît lorsque le div 'test' est utilisé comme un dialogue, il devient imbriqué dans la div de dialogue avec un div en-tête. Par conséquent, le div de test et son div contenant doivent tous deux avoir leurs hauteurs définies avec le div contenant en tenant compte de la hauteur de l'en-tête de dialogue. Régler sa hauteur sur auto devrait prendre soin de cela.

+0

Problème est que le contenu du fond est juste parti que, la barre de défilement n'apparaît plus. –