Выполнение скрипта после загрузки или высота относительно ширины?

Есть такая структура:

<div class='works'>
	<h1>Наши работы</h1>
	<div class='layout'>
		<span class="tile narrow">
			<div class='content'>
		</span>
		<span class="tile wide">
			<div class='content'>
		</span>
		<span class="tile wide">
			<div class='content'>
		</span>
		<span class="tile narrow">
			<div class='content'>
		</span>
		<a class="btn fw">Больше...</a>
	</div>
</div>


Блоки tile размечены на flex, narrow = 1/2 wide

Для того, чтобы сохранить соотношение сторон этих блоков, высота высчитывается как layout.width()/3.7. Все это делается таким скриптом:

$('.layout .tile').each(function(){
    var tileHeight = $('.layout').width()/3.7
    $(this).height(tileHeight)
    $(this).children('.content').height(tileHeight - 100 + 'px').width(tileHeight - 100 + 'px')
  })


Заодно, в нем прописывается высота и ширина контента.

Чаще всего, все высчитывается корректно, но иногда (как я понял опытным путем) скрипт выполняется до загрузки самих блоков и из высота схлопывается в ноль.

Покопавшись в интернете, нашел обработчик window.onload, который (по идее) должен был помочь, но ничего не поменялось. Этот обработчик ни с чем не конфликтует, остальные функции в нем срабатывают.

Как заставить конкретную функцию ждать подгрузки конкретных блоков?

Либо, как вариант, как по-другому высчитывать высоту блоков относительно ширины родительского?
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
dzheka3d
@dzheka3d
Оберните код в:
window.onload=function(){
// ваш код
}

Или jQuery
$( document ).ready(function() {
    // ваш код
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы