#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 заставила его вызываться по очереди, и теперь он отлично работает и загружается очень быстро.