Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2015, 13:39
Интересующийся
Отправить личное сообщение для segajb Посмотреть профиль Найти все сообщения от segajb
 
Регистрация: 18.03.2012
Сообщений: 21

Скрыть подменю
Есть такой мини код
http://jsfiddle.net/bfyfn4k0/
Вопрос: как сделать чтобы при клике на "+" другие открытые подменю скрывались, а текущий соответственно открывался
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2015, 14:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от segajb
как сделать чтобы при клике на "+" другие открытые подменю скрывались, а текущий соответственно открывался
Как вариант...

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.leftmenu li {list-style:none;  }
.leftmenu li span {border:1px solid #96b6c6; border-radius:7px; padding:13px 10px 13px 17px; margin-bottom:4px; background:url('../images/head.jpg') no-repeat 0 0; position:relative; display:block;}
.leftmenu li a {color:#363636; text-decoration:none;}
.leftmenu ul ul {display:none;}
.leftmenu .open {position:absolute; width:26px; height:26px; background:url('../images/open.png') no-repeat 0 0; top:9px; right:12px; z-index:140; cursor:pointer; }
.leftmenu .open:hover, .leftmenu .open.active { background:url('../images/open.png') no-repeat -26px 0; }
.leftmenu li li {margin-left:20px;}
.leftmenu li li span {padding-top:10px; padding-bottom:10px;}
.leftmenu li a:hover, .leftmenu li.active>span>a, .leftmenu li li.active a {text-decoration:underline;}
</style>
<script type='text/javascript'>
$(function(){
    $(".open").click(function(){
		$('.open.active').parent("span").parent("li").children("ul").slideToggle("slow");
		var end=$(this).hasClass('active');
        $('.leftmenu .open').removeClass("active");
		if (!end) {
			$(this).parent("span").parent("li").children("ul").slideToggle("slow");
			$(this).toggleClass("active");
		};
    });	
});
</script>
</head>
<body> 
<div class="leftmenu">	<ul>
		<li><span><a href="#">Пункт меню</a><i class="open">+</i></span>
			<ul>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
			</ul>
		</li>
		<li><span><a href="#">Пункт меню</a></span></li>
		<li><span><a href="#">Пункт меню</a></span></li>
		<li><span><a href="#">Пункт меню</a><i class="open">+</i></span>
			<ul>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
			</ul>
		</li>
	</ul>
</div>
</body>
</html>

Последний раз редактировалось ksa, 09.02.2015 в 14:23.
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2015, 16:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

segajb,
... вариант
<!DOCTYPE html>
<html ng-app>
<head>
<meta charset="utf-8">
<script src='https://code.jquery.com/jquery-latest.js'></script>
<style type='text/css'>
.leftmenu li {list-style:none;  }
.leftmenu li span {border:1px solid #96b6c6; border-radius:7px; padding:13px 10px 13px 17px; margin-bottom:4px; background:url('../images/head.jpg') no-repeat 0 0; position:relative; display:block;}
.leftmenu li a {color:#363636; text-decoration:none;}
.leftmenu ul ul {display:none;}
.leftmenu .open {position:absolute; width:26px; height:26px; background:url('../images/open.png') no-repeat 0 0; top:9px; right:12px; z-index:140; cursor:pointer; }
.leftmenu .open:hover, .leftmenu .open.active { background:url('../images/open.png') no-repeat -26px 0; }
.leftmenu li li {margin-left:20px;}
.leftmenu li li span {padding-top:10px; padding-bottom:10px;}
.leftmenu li a:hover, .leftmenu li.active>span>a, .leftmenu li li.active a {text-decoration:underline;}
.open.active{
  border: #0033FF  2px solid;
}

</style>
<script type='text/javascript'>
$(function() {
    var li = $(".leftmenu li");
    li.each(function(indx, el) {
        $(".open", el).click(function() {
            $(".open").not($(this).toggleClass('active')).removeClass("active");
            $("ul", li).not($("ul", el).slideToggle("slow")).slideUp();
        })
    });
 $(".open", li[0]).click() ; 
});
</script>
</head>
<body>
<div class="leftmenu">	<ul>
		<li><span><a href="#">Пункт меню</a><i class="open">+</i></span>
			<ul>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
			</ul>
		</li>
		<li><span><a href="#">Пункт меню</a></span></li>
		<li><span><a href="#">Пункт меню</a></span></li>
		<li><span><a href="#">Пункт меню</a><i class="open">+</i></span>
			<ul>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
				<li><span><a href="#">Под пункт меню</a></span></li>
			</ul>
		</li>
	</ul>
</div>
</body>
</html>

Последний раз редактировалось рони, 25.11.2017 в 23:56.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2015, 12:27
Интересующийся
Отправить личное сообщение для segajb Посмотреть профиль Найти все сообщения от segajb
 
Регистрация: 18.03.2012
Сообщений: 21

+
всем спасибо, то что нужно!
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2016, 16:50
Новичок на форуме
Отправить личное сообщение для Alex465 Посмотреть профиль Найти все сообщения от Alex465
 
Регистрация: 28.10.2016
Сообщений: 2

Открыта первая категория
А как реализовать - чтобы первая категория была по умолчанию открыта ?
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2016, 17:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Alex465
А как реализовать - чтобы первая категория была по умолчанию открыта ?
строка 30 пост №3
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2016, 18:20
Новичок на форуме
Отправить личное сообщение для Alex465 Посмотреть профиль Найти все сообщения от Alex465
 
Регистрация: 28.10.2016
Сообщений: 2

Сообщение от рони Посмотреть сообщение
строка 30 пост №3
Весьма Вам благодарен.
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2017, 22:48
Новичок на форуме
Отправить личное сообщение для globus812 Посмотреть профиль Найти все сообщения от globus812
 
Регистрация: 25.11.2017
Сообщений: 1

Сообщение от рони Посмотреть сообщение
строка 30 пост №3
А как можно сделать так, чтобы при переходе по ссылке пункта меню/подменю меню не полностью закрывалось, а оставались открытыми те пункты, которые были открыты до перехода на другую страницу?
Ответить с цитированием
  #9 (permalink)  
Старый 26.11.2017, 00:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как автоматически скрыть список подменю alexyarik Элементы интерфейса 0 29.11.2014 13:09
Скрыть меню после перехода IndigoHollow Элементы интерфейса 1 16.12.2013 10:19
прокручивающееся подменю evgh Events/DOM/Window 20 13.06.2011 16:32
Использование css свойства display для подменю Lex4e Общие вопросы Javascript 7 07.01.2010 22:02
Съезжающее вниз подменю Djony1987 jQuery 4 04.10.2009 08:20