JQuery Fancybox не ждет загрузки содержимого AJAX, прежде чем определить его размеры - PullRequest
4 голосов
/ 13 июля 2010

Я использую Fancybox для загрузки некоторого контента с помощью AJAX.

Содержание:

<div class="container">
  <h2>An image</h2>
  <div class="span-16 colborder center clearfix">
    <img src="/system/images/apple.jpg">
  </div>

  <div class="span-7 last clearfix">
    something here
    <br>
     something here
  </div>
  <div class="span-24 last">
    FOOTER FOOTER FOOTER
  </div>
</div>

JS :

  $('a.edit-image').fancybox({
    'autoScale' : false,
    'scrolling' : 'no'
  });

Контент загружается, но Fancybox рендерит только с высотой, чтобы вместить текст, оставляя изображение переполненным снизу. Изображение (которое может быть довольно большим) загружается за минуту, и я думаю, что Fancybox не ждет, пока он определит высоту, которую он должен отрендерить.

Размещение изображения в другом месте на странице (в виде предварительной загрузки) предотвращает ошибку. Кроме того, это происходит только при первом открытии Fancybox, потому что он кешируется каждый раз после этого.

Кто-нибудь знает наименее хакерский способ заставить Fancybox отображать на правильной высоте, или просто установить его высоту в 'auto'?

Спасибо!

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Я добавил триггер для события resize div .container, который регулировал размер div fancybox-content. Это сделало работу.

0 голосов
/ 27 июля 2013

Вы можете просто использовать метод обновления, чтобы изменить размер fancybox после загрузки содержимого AJAX.

$.fancybox.update();
...