Меню на jQuery. Помогите доделать клик на странице. Deff 
		
		
		
		Этот скрипт взят у Deff 
	Есть идея доработки. Идея в том, что данный скрипт будет использован в качестве горизонтального меню. Добавить нужно лишь действие описывающее клик на любом месте страницы, при котором открытые пункты меню будут сворачиваться. И вместо $( this ).slideToggle( 1 );return true; и $( this ).slideUp( 1 );return true; сделать .hide(); и .show(); Попробовал реализовать все сам, но к сожалению ничего не получилось. 
function setcookie(a,b,c) {
	if(c){
		var d = new Date();
		d.setTime(d.getTime()+c);
	}
	if(a && b) 
		document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');
	else
		return false;
}
function getcookie(a) {
	var b = new RegExp(a+'=([^;]){1,}');
	var c = b.exec(document.cookie);if(c) c = c[0].split('=');
	else 
		return false;
		return c[1] ? c[1] : false;
}
$(document).ready(function() {
	var nav = $(".menu");
	var uls = nav.find("ul");
	$('ul li').has('ul').addClass('include');
	
	var coci_MENU= getcookie( "MENU" );
	if (coci_MENU) {
		setcookie( "MENU",coci_MENU ,30*3600*24*1000 );
		// тут получаем индексы из куки и перебираем их:
		var showedElems = ( coci_MENU || "" ).split(",");
		for( var i = 0; i < showedElems.length; i++ ) {
			// отображаем при загрузке то что надо.
			$( uls[ showedElems[ i ] ] ).show();
		}
	}
	nav.find("a").click(function() {
		var Lnk=$(this).attr("href");
		if(Lnk==''||Lnk.indexOf('#')==0) setcookie( "MENU",1 ,-1);
		var self = $(this).next();
		if ( self.length == 0 ) return;
		var showedElems = [];
		uls.each(function( index ){
			if ( this === self[0] ) {
				if ( self.css('display') == "none" ) {showedElems.push(index);}
					$( this ).slideToggle( 1 );return true;
			}
			if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
					$( this ).slideUp( 1 );return true;
			}
			showedElems.push(index);
		});
		// эту переменную  суём в куки,
		setcookie( "MENU", showedElems.join(",") ,30*3600*24*1000 );
		return false;
	});
}).click(function() {
	$(".sub-menu").hide();
	$(".highlight").removeClass("highlight");
});
Вот то, что у меня получилось http://learn.javascript.ru/play/3C3. Работает клик по странице и все скрывается, но есть лишь одна трудность, если кликнуть в любом месте выпадающего меню, то оно тоже скрывается, собственно это и нужно исправить.  | 
	
		
 Mizter, 
	Чтобы не скрывался - последняя рабочай ссылка в меню должна быть реальной ссылкой, а не <li><a href="#">Главная 2</a></li> Либо должна быть продолжена вложенность  | 
	
		
 Deff, не могли бы Вы это сделать? Я изменил все <li><a href="#">Главная 2</a></li> на рабочие ссылки и все равно не работает. 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 В песочницах переходы по ссылкам запрещены И куки в песочне не держаться, поскольку при каждом просмотре генериться новая страница  | 
	
		
 Deff, 
	http://artlab.tk/laboratorize/ver.0.1a/index.html вот реальная текстовая страница В ней видно, что в куки не записывается событие нажатия мышкой по любому месту страницы и последующему скрытию объекта.  | 
	
		
 Mizter, 
	Криво скопировали скрипт куков, работал же, зачем красоту наводить, и суньте скрипты, как есть на страницу, 
<!DOCTYPE html>
<html>
<head>
	<title>Песочница</title>
	<link rel="stylesheet" href="http://artlab.tk/laboratorize/ver.0.1a/my.css" type="text/css" media="screen" />
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
	<!--<script type="text/javascript" src="http://artlab.tk/laboratorize/ver.0.1a/my.js"></script>-->
<script type="text/javascript">
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
$(document).ready(function() {
	var nav = $(".menu");
	var uls = nav.find("ul");
	$('ul li').has('ul').addClass('include');
	
	var coci_MENU= getcookie( "MENU" );
	if (coci_MENU) {
		setcookie( "MENU",coci_MENU ,30*3600*24*1000 );
		// тут получаем индексы из куки и перебираем их:
		var showedElems = ( coci_MENU || "" ).split(",");
		for( var i = 0; i < showedElems.length; i++ ) {
			// отображаем при загрузке то что надо.
			$( uls[ showedElems[ i ] ] ).show();
		}
	}
	nav.find("a").click(function() {
		var Lnk=$(this).attr("href");
		if(Lnk==''||Lnk.indexOf('#')==0) setcookie( "MENU",1 ,-1);
		var self = $(this).next();
		if ( self.length == 0 ) return;
		var showedElems = [];
		uls.each(function( index ){
			if ( this === self[0] ) {
				if ( self.css('display') == "none" ) {showedElems.push(index);}
					$( this ).toggle();return true;
			}
			if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
					$( this ).hide();return true;
			}
			showedElems.push(index);
		});
		// эту переменную  суём в куки,
		setcookie( "MENU", showedElems.join(",") ,30*3600*24*1000 );
		return false;
	});
})
</script>
<style>
 .sub-menu a {
 display:inline-block;
 width:100%;
 margin:0;
}
</style>
</head>
  
<body>
	<ul class="menu">
		<li><a href="#">My Account</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
		</li>
		<li><a href="#dashboard" >Dashboard</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
		</li>
	    <li><a href="/laboratorize/ver.0.1a/index.html" >Profile</a></li>
	   	<li class="tap"><a href="/laboratorize/ver.0.1a/index.html">Settings</a></li>
	    <li><a href="/laboratorize/ver.0.1a/index.html">Send Feedback Follow Link</a></li>
	    <li><a href="#signout">Sign Out</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
	    </li>
	</ul>
</body>
</html>
 | 
	
		
 Deff, 
	Скрипит куков работает правильно и записывает информацию о нажатии, но только при повторном нажатии на элемент, когда нужно скрыть, нужно просто прописать записывание куков в .click(function () {....}); но Я не знаю как правильно, плюс еще не знаю как решить проблему с нажатием на выпадающее меню и последующим его скрытием Тем более если вставлять весь код целиком на страницу, то это будет не совсем удобно для последующей правки, стремлюсь к меньшему количеству строк  | 
	
		
 Пробуйте - собрал из Ваших кусков и вставил куки исходные 
	Проверить память: выбрать менюшку и нажать повторно "посмотреть" ========================================= Во фрейме, тут в топике, - DOM устанавливаецо медленно, так что кликайте после 20-30 сек  | 
	
		
 Добавил стиль, чтоб не кликалось мимо ссылки 
	
<style>
 .sub-menu a {
 display:inline-block;
 width:100%;
 margin:0;
}
</style>
 | 
	
		
 Mizter, 
	Кликалось и скрывалось меню, из-за этой Вашей добавки 
}).click(function() {
	$(".sub-menu").hide();
	$(".highlight").removeClass("highlight");
});
 | 
	
		
 Deff, 
	мне и нужно, чтобы меню исчезало по клику на странице и это записывалось в куки, но мои модификации к сожалению не те функции добавляют, что Я хочу  | 
	
		
 Цитата: 
	
 
<!DOCTYPE html>
<html>
<head>
	<title>Песочница</title>
	<link rel="stylesheet" href="http://artlab.tk/laboratorize/ver.0.1a/my.css" type="text/css" media="screen" />
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
	<!--<script type="text/javascript" src="http://artlab.tk/laboratorize/ver.0.1a/my.js"></script>-->
<script type="text/javascript">
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
$(document).ready(function() {
	var nav = $(".menu");
	var uls = nav.find("ul");
	$('ul li').has('ul').addClass('include');
	
	var coci_MENU= getcookie( "MENU" );
	if (coci_MENU) {
		setcookie( "MENU",coci_MENU ,30*3600*24*1000 );
		// тут получаем индексы из куки и перебираем их:
		var showedElems = ( coci_MENU || "" ).split(",");
		for( var i = 0; i < showedElems.length; i++ ) {
			// отображаем при загрузке то что надо.
			$( uls[ showedElems[ i ] ] ).show();
		}
	}
	nav.find("a").click(function() {
		var Lnk=$(this).attr("href");
		if(Lnk==''||Lnk.indexOf('#')==0) setcookie( "MENU",1 ,-1);
		var self = $(this).next();
		if ( self.length == 0 ) return;
		var showedElems = [];
		uls.each(function( index ){
			if ( this === self[0] ) {
				if ( self.css('display') == "none" ) {showedElems.push(index);}
					$( this ).toggle();return true;
			}
			if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
					$( this ).hide();return true;
			}
			showedElems.push(index);
		});
		// эту переменную  суём в куки,
		setcookie( "MENU", showedElems.join(",") ,30*3600*24*1000 );
		return false;
	});
   $("body").click(function() {
      $(".menu").find('ul:visible').hide();
   });
})
</script>
<style>
 .sub-menu a {
 display:inline-block;
 width:100%;
 margin:0;
}
</style>
</head>
  
<body style="height:500px;">
	<ul class="menu">
		<li><a href="#">My Account</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
		</li>
		<li><a href="#dashboard" >Dashboard</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
		</li>
	    <li><a href="/laboratorize/ver.0.1a/index.html" >Profile</a></li>
	   	<li class="tap"><a href="/laboratorize/ver.0.1a/index.html">Settings</a></li>
	    <li><a href="/laboratorize/ver.0.1a/index.html">Send Feedback Follow Link</a></li>
	    <li><a href="#signout">Sign Out</a>
			<ul class="sub-menu">
				<li><a href="/laboratorize/ver.0.1a/index2.html">Главная 2</a></li>
				<li><a href="/laboratorize/ver.0.1a/index2.html" >Dashboard</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html" >Profile</a></li>
			   	<li><a href="/laboratorize/ver.0.1a/index2.html">Settings</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Send Feedback Follow Link</a></li>
			    <li><a href="/laboratorize/ver.0.1a/index2.html">Sign Out</a></li>
			</ul>
	    </li>
	</ul>
</body>
</html>
 | 
	
		
 да, только когда жмешь на любое место в раскрывающемся меню, то оно тоже скрывается, нужно это как то устранить 
	и когда обновляешь страницу, скрывшееся меню от нажатия в любом месте страницы не записывается в куки, и при обновлении остается открытым  | 
	
		
 Mizter, 
	Не вижу этого в примере, скрывается только с переходом, Установите на сайт - дайте ссылку (куки вынесите в отдельный файл) О птичках = возможно у Вас разные подпапки перехода по ссылкам, тогда нужно подправить скрипт куков(или поставить плагин Куков для jQuery Текущий расчитан на постоянный адресный путь  | 
| Часовой пояс GMT +3, время: 03:13. |