обновить изображение в диалоговом окне jquery - PullRequest
1 голос
/ 12 февраля 2010

У меня есть диалоговое окно 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, если div не находится в диалоговом окне. Тем не менее, поскольку это один, IMG не обновляется. Диалоговое окно не кажется уничтоженным, так как оно открывается сразу. Я попытался обновить изображение в функциях открытия и закрытия, но безуспешно. Есть предложения?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Попробуйте переместить эти две строки в функцию обратного вызова open:

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

Это позволит убедиться, что контейнер элемента действительно существует.

Также вместо now.getTime() вы можете попробовать (+new Date()) только для ударов.

0 голосов
/ 17 февраля 2010

Итак, я разобрался с проблемой. По иронии судьбы это было связано с датой в конце концов. Я объявлял переменную «сейчас» вне функции, поэтому дата фактически не менялась.

поэтому я изменил строку на

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

и вуаля ... без проблем!

...