Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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;
	});


Не пинайте пожалуста сильно
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2013, 12:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

ivannnn,
$('.newselect').selectbox(); а подключен ли данный плагин selectbox? выдаёт что нет и закрывающий тег <html> наклонная черта пропущена. а так слишком много всего подключено разве что метод job помочь сможет
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2013, 12:34
Новичок на форуме
Отправить личное сообщение для ivannnn Посмотреть профиль Найти все сообщения от ivannnn
 
Регистрация: 18.07.2013
Сообщений: 2

тег поправил, скрипты отключил)))

судя по самому скрипту, он высоту списка сохраняет в rel="", но если список скрыт, то там 0.
причем шаблон меню и скрипт взяты с Шаблона интернет-магазина битрикс.

Последний раз редактировалось ivannnn, 18.07.2013 в 12:37.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает скрипт отображения списка Konstantine Javascript под браузер 3 18.03.2013 06:00
самозакрывающееся меню в виде списка о_О dimitar Элементы интерфейса 4 20.03.2012 15:27
Выпадающие меню like2dev Общие вопросы Javascript 9 21.10.2011 14:09
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36
Сокращение списка выпадающего меню. Predatorbbs Элементы интерфейса 3 22.11.2010 15:23