Разные значения ширины элементов при загрузке страницы, jQuery?

Задача:
Есть выпадающее меню на сайте. В выпадающем окне есть колонки разной ширины. Необходимо подсчитать ширину всех колонок и задать эту ширину родительскому контейнеру.

Родился такой код
function calculateColsWidth(){
  $('.main-menu .main-menu__item--parent').each(function(){
    var subcolsContainer = $(this).find('.b-subcols');
    var contWidth = 0;
    $('.subcol-col',subcolsContainer).each(function(){
      	contWidth+= $(this).outerWidth(true);
      	console.log('contWidth= '+contWidth);
    });
    
    if(contWidth > 980)
      contWidth = 980;
    subcolsContainer.width(contWidth);
    
  }); 
  
}


Вызов функции после загрузки страницы
window.onload = function(){
   calculateColsWidth();
}


Однако ширина колонок считается неправильно. После первого вызова функции ширина каждой колонки на 10px меньше. При повторном вызове функции через консоль все высчитывает верно.

Не могу понять, почему так происходит.

Браузер - Хром.

Буду рад любой помощи.

Ссылка с кодом jsfiddle.net/ckL6p/1
  • Вопрос задан
  • 2890 просмотров
Пригласить эксперта
Ответы на вопрос 2
есть ли картинки? функция windows.onload - загружает только html, но при этом картинки могут менять размеры элементов, воспользуйтесь плагином waitforimages
Ответ написан
у меня вопрос – нужно просто чтобы блок с вторым уровнем меню ( и его подкатегориями) расстягивался по ширине всего меню? правильно?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы