2016-08-25 5 views
0

У меня есть этот код в крюке успеха на событие Ajax:

success: function (data) { 
    $(loadTarget).html(data.details); 
    $.colorbox.resize(); 
} 

loadTarget является ДИВ в уже открытой ColorBox.

Проблема в том, что цветная коробка иногда не изменяется правильно, как если бы $ .html() был асинхронным.

В соответствии с этим вопросом Resizing colorbox after loading HTML content into a DIV Ajax callback работает как-то загадочно и что они несут ответственность за это, но я не понимаю, как это может быть причиной, если $ .html() в обратном вызове ajax тоже.

Почему это и как его исправить?

ответ

0

Оказалось, это проблема с изображениями.

$.html() только что вставленные img теги, а $.colorbox.resize() произошло до того, как были загружены изображения.

Найдено два способа исправить

  1. Использование JQuery крюке
  2. по высоте Установка свойство Img, что (если известно)
0

См эту ссылку https://api.jquery.com/Ajax_Events/

success (Local Event) 

Это событие вызывается, только если запрос был успешно (без ошибок с сервера, без ошибок с данными).

Это означает, что функция успеха фактически вызывается, если запрос ajax сделан только успешно. Это означает, что данные могут не использоваться и не обрабатываться другими функциями или операциями!

Возможно, это причина вашего поведения.!

+0

моя проблема заключается в том, что изменение размера не будет должным образом учитывать изменения в содержании сделаны по вызову ajax. если ajax не работает, изменений нет и нет необходимости изменять размер. –

+0

Можете ли вы создать jsFiddle, чтобы лучше понять сценарий? –

Смежные вопросы