Я создаю страницу, где я хочу использовать скрипт Galleria (http://devkick.com/lab/galleria/) и виджет Accordion jQuery, чтобы скрыть разные категории миниатюр галереи. В моей инициализации я написал, как было предложено руководствами оба сценария:Порядок инициализации jQuery
<script type="text/javascript">
jQuery(function($) {
$('ul.gallery').galleria({
insert: "#image"
});
$("#thumbs").accordion();
});
</script>
galleria()
функция создает эскизы и присваивает соответствующие размеры для них. Затем функция accordion()
присваивает свои стили и сворачивает текущие невидимые элементы. С приведенным выше кодом у меня есть проблема с тем, что некоторые уменьшенные изображения становятся невидимыми из-за нулевого размера.
Если я помещал предупреждения, прежде чем миниатюрам назначаются их размеры в функции galleria()
, я вижу, что для изображений, которые находятся внутри невидимых страниц аккордеона, их контейнер имеет нулевые размеры в этой точке. Это очень странно для меня, потому что я думал, что эти функции выполняются последовательно, а accordion()
не вызывается до завершения galleria()
.
Что более странно, если я поставил предупреждение перед функцией аккордеона, тогда все обрабатывается в правильном порядке.
Очевидно, что я столкнулся с состоянием гонки здесь. Почему это происходит и что я должен делать, чтобы гарантировать упорядоченную последовательность инициализации?
Вот и все! Позор мне, мог бы догадаться. Размеры миниатюр устанавливаются не в параметре galleria(), а в обработчике load() для объекта изображения. Я пропустил это, пока я изучал источники galleria. Спасибо! – Corvin