2010-02-11 7 views
1

J'ai une boîte de dialogue jquery qui s'ouvre au moyen d'un lien. Je voudrais que chaque fois que j'ouvre la boîte de dialogue, l'image est actualisée.actualise une image dans une boîte de dialogue jquery

J'ai essayé quelque chose comme ceci:

function open_dialog() { 
    $("#imageThumbBox").dialog('destroy'); 
    $("#imageThumbBox").dialog({ 
    autoOpen: false, 
    closeOnEscape: true, 
    resizable: true, 
    height: 'auto', 
    width: 'auto', 
    buttons: { 
     Cancel: function() { 
     $(this).dialog('destroy'); 
     } 
    }, 
    close: function() { 
     $(this).dialog('destroy'); 
    }, 
    open: function() { 
    } 
    }); 
    var img = db_cgi_url + "/photo.cgi?do=view;ID=" + ID + ";" + now.getTime(); 
    $("#my_image").attr("src", img); 
    $("#imageThumbBox").dialog('open'); 
} 

Je peux mettre à jour toute balise « img » bien tant que le div ne se trouve pas dans une boîte de dialogue. Cependant, puisque celui-ci est, l'img ne met pas à jour. La boîte de dialogue ne semble pas être détruite car elle s'ouvre immédiatement. J'ai essayé de mettre à jour l'image dans les fonctions d'ouverture et de fermeture sans succès. Des suggestions?

Répondre

-1

J'ai donc résolu le problème. Ironiquement, cela avait à voir avec la date afterall. Je déclarais la variable "maintenant" en dehors de la fonction, par conséquent, la date ne changeait pas réellement.

donc je changé la ligne

var img = db_cgi_url + "/photo.cgi?do=view;ID=" + ID + ";" + new Date().getTime(); 

et voila ... pas de problème!

+1

Cela ne veut-il pas dire que si vous avez fait ce que j'ai suggéré, cela aurait fonctionné? –

+0

Non, parce que si vous lisez réellement mon message original que vous verriez que j'ai déjà essayé de mettre les deux lignes dans les fonctions d'ouverture et de fermeture sans succès. Le problème n'était pas dans mon placement des deux lignes, mais dans mon placement de la fonction temporelle. – Jonathan

3

Essayez de déplacer ces deux lignes dans la fonction de rappel open:

var img = db_cgi_url + "/photo.cgi?do=view;ID=" + ID + ";" + now.getTime(); 
$("#my_image").attr("src", img); 

Cela fera en sorte que le réservoir d'élément existe réellement.

Aussi, au lieu de now.getTime(), vous pouvez essayer (+new Date()) juste pour les coups de pied.

+0

J'ai essayé cela sans succès. Il ne recharge pas la boîte de dialogue. C'est comme si la boîte de dialogue ne pouvait pas être détruite ou rechargée une fois qu'elle est chargée initialement. BTW J'ai "var now = new Date();" en haut de mon code – Jonathan