Показать сообщение отдельно
  #1 (permalink)  
Старый 18.07.2013, 11:34
Новичок на форуме
Отправить личное сообщение для ivannnn Посмотреть профиль Найти все сообщения от ivannnn
 
Регистрация: 18.07.2013
Сообщений: 2

Подсчет высоты списка меню
Доброго времени суток!

Помогите разобраться, в меню нужно сделать раскрытие списка, брал шаблон и скрипт готовыми, а выявился недостаток, если просто с главной страницы пытаться раскрыть, то родительский список не сдвигается вниз, так как высота дочернего равна 0, а если зайти на уровень ниже, то этот же пункт работает нормально.

http://ivan-home.no-ip.biz - пока заполнен только пункт Компрессоры.

function setHeightlvlp(clickitem){
		if(clickitem.parent("span").parent("li").find("ul:first").attr('rel')){
			heightlvl2Ul = clickitem.parent("span").parent("li").find("ul:first").attr('rel');
		} else {
			clickitem.parent("span").parent("li").find("ul:first").css({display: 'block',height:"auto"});
			heightlvl2Ul = clickitem.parent("span").parent("li").find("ul:first").height();
		}
	}

	var lis = $('.sidebar .nav').find('li');
	for(var i = 0; i < lis.length; i++) {
		if($(lis[i]).hasClass('current')) {
			if($(lis[i]).parents("li").hasClass('lvl1')){

				var ul = $(lis[i]).find('ul:first');
				$(ul).css({display: 'block',height:"auto"});
				var h = $(ul).height();
				$(ul).css({height: 0, display: 'block'});

				var ulp= $(lis[i]).parents("li.lvl1").find('ul:first');
				$(ulp).css({display: 'block'});
				var hp = $(ulp).height();
				$(ulp).css({height: 0, display: 'block'});

				$(ul).attr("rel", h);
				$(ulp).attr("rel", hp);
				$(ul).css({height: h+'px'});
				$(ulp).css({height: h+hp+'px'});
			} else {
				var ul = $(lis[i]).find('ul:first');
				$(ul).css({display: 'block',height:"auto"});
				var h = $(ul).height();
				$(ul).css({height: 0, display: 'block'});
				$(ul).attr("rel", h);
				$(ul).css({height: h+'px'})
			}
		}
	}

	$(".showchild").live('click', function() {
		var clickitem = $(this);
		if( clickitem.parent("span").parent("li").hasClass('lvl1')){

			if( clickitem.parent("span").parent("li").hasClass('current')){
				clickitem.parent("span").parent("li").find("ul").animate({height: 0}, 300);
				clickitem.parent("span").parent("li").removeClass("current");
				clickitem.parent("span").parent("li").find(".current").removeClass("current");
			} else {
				setHeightlvlp(clickitem);
				clickitem.parent("span").parent("li").find("ul:first").attr('rel',heightlvl2Ul);
				clickitem.parent("span").parent("li").find("ul:first").css({height: 0, display: 'block'});
				clickitem.parent("span").parent("li").find("ul:first").animate({height: heightlvl2Ul+'px'}, 300);
				clickitem.parent("span").parent("li").addClass("current");
			}
		} else {
			if( clickitem.parent("span").parent("li").hasClass('current')){
				setHeightlvlp(clickitem);
				heightLVL1= clickitem.parents(".lvl1").find("ul:first").height(); 
				var resulth = parseInt(heightLVL1)-parseInt(heightlvl2Ul)
				clickitem.parent("span").parent("li").find("ul").animate({height: 0}, 300);
				clickitem.parents(".lvl1").find("ul:first").animate({height: resulth+"px"}, 300);
				clickitem.parent("span").parent("li").removeClass("current");
			} else {
				setHeightlvlp(clickitem);
				heightLVL1 = clickitem.parents(".lvl1").find("ul:first").height();
				clickitem.parent("span").parent("li").find("ul:first").attr('rel',heightlvl2Ul);
				clickitem.parent("span").parent("li").find("ul:first").css({height: 0, display: 'block'});
				clickitem.parent("span").parent("li").find("ul:first").animate({height: heightlvl2Ul+'px'}, 300);
				clickitem.parents(".lvl1").find("ul:first").animate({height:  parseInt(heightlvl2Ul)+ parseInt(heightLVL1)+'px'}, 300);
				clickitem.parent("span").parent("li").addClass("current");
			}
		}
		return false;
	});


Не пинайте пожалуста сильно
Ответить с цитированием