Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с меню (https://javascript.ru/forum/misc/41600-problema-s-menyu.html)

Gidz 20.09.2013 22:30

Проблема с меню
 
Привет. Помогите разобраться с меню. Проблема в том, что линки не активны, т.е. не переходит по ссылкам в меню.

$(document).ready(function() {
	$('.menu li a').click(function(){
		var el = $(this).next('ul');
		if (!el.length) return false;
		if (el.css('display') == 'none') {
			$('.menu li ul').slideUp(500);
			$('.menu li a').removeClass ('selected');
			el.slideDown(500);
			$(this).addClass ('selected');
		} else {
			el.slideUp(500);
			$(this).removeClass ('selected');
		}
	})
});



<ul class="menu">
	<li>
		<a>link1</a>
		<ul>
			<li><a href="#">1</a></li>
			<li><a href="#">2</a></li>
		</ul>
	</li>
	<li><a href="#">link1</a></li>
	<li><a href="#">link1</a></li>
</ul>

unl0k 21.09.2013 00:10

Если за текущим элементом "a" нет элемента "ul", принудительно отменяется выполнение события "click" - "if (!el.length) return false".

Как вариант:

$(document).ready(function() {
	$('.menu li a').click(function(){
		var el = $(this).next('ul');
		if (el.length !== 0) {
			if (el.css('display') == 'none') {
				$('.menu li ul').slideUp(500);
				$('.menu li a').removeClass ('selected');
				el.slideDown(500);
				$(this).addClass ('selected');
			} else {
				el.slideUp(500);
				$(this).removeClass ('selected');
			}
		}
	})
});


Часовой пояс GMT +3, время: 07:26.