Изменение размера colorbox после загрузки содержимого HTML в DIV

#javascript #jquery #resize #colorbox

#javascript #jquery #изменение размера #colorbox

Вопрос:

Я рискнул просмотреть все без исключения сообщения здесь о проблемах с изменением размера colorbox, свойствах div и многих других вещах! В любом случае, этот очень простой фрагмент кода загоняет меня в тупик, и мне интересно, нельзя ли на него ответить?

 <script type="text/javascript">
$(document).ready(function () {
    $("#text").load("<%= Model.FileLocation %>");
    $.fn.colorbox.resize();
});
</script>
<div id="text"></div>
 

Выше приведен код (который, я бы предположил, должен работать как шарм). Я пытался использовать $.get и помещать изменение размера в обратный вызов, используя тайм-ауты и разделяя вещи функциями.

Я также проверил, что ничего не сломано, текст загружается (выдает предупреждение с помощью $(«#text»), поскольку сообщение показывает мне загруженный текст. Также я могу указать ширину и / или высоту для функции изменения размера, и они работают, однако я не могу сделать это на основе загруженного содержимого.

Извините за многословный пост … есть идеи, почему в мире эта вещь не будет изменяться?

Ответ №1:

Попробуйте дождаться фактической загрузки содержимого.

 <script type="text/javascript">
$(document).ready(function () {
    $("#text").load("<%= Model.FileLocation %>", function() {
         $.fn.colorbox.resize();
    });
});
</script>
<div id="text"></div>
 

Комментарии:

1. (Предыдущий комментарий удален) Я действительно пробовал это изначально, и это не сработало. Увидев ответ, я решил попробовать еще раз, и это сработало ОДИН раз (и потребовалось более 5 секунд, чтобы, наконец, запустить функцию изменения размера). Теперь он ничего не делает, очищает кеш, перезапускает браузер и т. Д. Изменение размера по-прежнему ничего не делает, даже внутри обратного вызова >.>

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

3. Нет проблем, просто рад, что вы это поняли.

Ответ №2:

Спасибо всем, кто читал и пытался найти причину, по которой это не сработало, однако я, наконец, нашел обходной путь.

Похоже, что по какой-то причине, даже resize() при успешном обратном вызове, он все равно вызывался слишком рано. Я смог открыть firebug и вручную ввести colorbox.resize() функцию в командной строке, и она отлично работала после загрузки, даже несмотря на сбой обратного вызова.

Итак, что я сделал, так это

 $(document).ready(function () {
        jQuery.ajaxSettings.async = false;

        $('#text').load('<%= Model.FileLocation %>');
        $.fn.colorbox.resize();
});
 

Установка async в ajax значения false заставила его вызываться по очереди, и теперь он отлично работает и загружается очень быстро.