Что не так с кодом?

Такие дела.
function subcatHeight()
{
	$('.subcategories-block').each(function()
	{
		var parent = $(this),
			item = parent.find('.subcategories-block__item'),
			itemsLength = item.length,
			itemsHeight = 0,
			itemLonger = 0;

		item.each(function()
		{
			itemsHeight = itemsHeight + $(this).innerHeight();

			if( $(this).innerHeight() > itemLonger )
			{
				itemLonger = $(this).innerHeight();
			}
		});

		parent.css({
			"max-height" : itemsHeight/4 + itemLonger*0.7
		});
	});
}


При структуре:
<div class="subcategories-block">
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
</div>

<div class="subcategories-block">
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
</div>

<div class="subcategories-block">
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
    <div class="subcategories-block__item">
        content
    </div>
</div>


Почему-то выдает, что $(this).innerHeight() (в item.each()) равно -1
А parent.css() вообще не срабатывает.
Ошибок никаких консоль не показывает

Вот сам поциент: euromade.bookreev.com (смотреть Меню товаров)

Хотя на codepen все нормально
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
Хотя на codepen все нормально

В codepen у вас весь контент виден и нигде не стоит display:none
Попробуйте обойти это примерно так
function subcatHeight() {
  var $subcategories = $('.subcategories-block'),
    $subMenu = $('.goods-menu__subcategories').css({ visibility: 'hidden', display: 'block' });

  $subcategories.each(function() {
    var $parent = $(this),
      item = $parent.find('.subcategories-block__item'),
      itemsLength = item.length,
      itemsHeight = 0,
      itemLonger = 0;

    item.each(function() {
      itemsHeight += $(this).innerHeight();

      if( $(this).innerHeight() > itemLonger )
      {
        itemLonger = $(this).innerHeight();
      }
    });

    $parent.css({
      "max-height" : itemsHeight/4 + itemLonger*0.7
    });
  });
  $subMenu.css({ visibility: '', display: '' });
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ArturArturov
попробуй так:
$(this).height()
Ответ написан
Ваш ответ на вопрос

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

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