2010-02-11 91 views
1

我有一个通过链接打开的jquery对话框。我希望它每次打开对话框时都会刷新图像。在jquery对话框中刷新图像

我想是这样的:

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'); 
} 

只要股利不位于一个对话框,我可以更新任何“IMG”标签罚款。但是,因为这一个,img不会更新。该对话框似乎不会被破坏,因为它打开了immediatley。我试图在打开和关闭功能中更新图像,但没有成功。任何建议?

回答

-1

所以我想出了问题。具有讽刺意味的是,它确实与日期有关。我在函数之外声明变量“now”,因此日期实际上并没有改变。

所以我改变了行

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

,瞧......没有问题!

+1

这并不意味着如果你做了我的建议,它会起作用吗? – 2010-02-17 05:01:22

+0

不,它不会,因为如果你真的读到我原来的信息,你会发现我已经试图把这两行放在打开和关闭函数中,但没有成功。问题不在于我放置了两条线,而是放置了时间函数。 – Jonathan 2010-02-19 20:06:14

3

尝试这两条线移动到open回调函数:

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

,将确保该元素的容器确实存在。

而不是now.getTime()你可能会尝试(+new Date())只为踢。

+0

我试过没有成功。它不会重新加载对话框。就好像该对话框一旦被初始加载后就不能被销毁或重新加载。 顺便说一句我有“var now = new Date();”在我的代码顶部 – Jonathan 2010-02-11 23:51:12