【问题标题】:refresh an image inside a jquery dialog box刷新 jquery 对话框中的图像
【发布时间】:2011-01-15 22:53:12
【问题描述】:

我有一个通过链接打开的 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');
}

只要 div 不在对话框中,我就可以更新任何“img”标签。但是,由于这是一个,因此 img 不会更新。该对话框似乎没有 2 被破坏,因为它立即打开。我尝试在打开和关闭功能中更新图像但没有成功。有什么建议吗?

【问题讨论】:

    标签: jquery image dialog refresh


    【解决方案1】:

    尝试将这两行移到open 回调函数中:

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

    这将确保元素容器确实存在。

    你也可以试试(+new Date()),而不是now.getTime()。

    【讨论】:

    • 我试过没有成功。它不会重新加载对话框。就好像对话框一旦最初加载就不能被销毁或重新加载。顺便说一句,我有“var now = new Date();”在我的代码顶部
    【解决方案2】:

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

    所以我把行改为

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

    瞧……没问题!

    【讨论】:

    • 这不是说如果你按照我的建议去做,它就会奏效吗?
    • 不,它没有,因为如果你真的阅读了我的原始信息,你会看到我已经尝试将这两行放在打开和关闭函数中,但没有成功。问题不在于我对两条线的位置,而在于我对时间函数的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多