Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2014, 19:40
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Выподающее меню С подсветкой активного элемента на странице
Здравствуйте подскажите пожалуйста, как сделать выпадающее меню с подпунктами и подсвечиванием того пункта меню который я выбрал.
Мой список работает , но при выборе пункта меню он добавляет класс только для <li><a class="nav_art" href="/two">Январь (10)</a></li>
А для категории меню не выбирает и соответственно не раскрывает список,
<!DOCTYPE HTML>
<html lang="ru-RU">
	<head>
		<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
	</head>
<html>
<body>
<style>

ul.left_menu li a:hover, ul.left_menu li.active a {
	color:#FFF;
	background-color:#78bbe6;
	border:1px solid #78bbe6;
}

ul.acitem {
	list-style:none;
}

ul.left_menu a.active, ul.left_menu ul.acitem li a.active, ul.left_menu a.active:hover, ul.left_menu ul.acitem li a.active:hover {
	color:#FFF;
	background-color:#78bbe6;
	border:1px solid #78bbe6;
}
</style>
<script type="text/javascript">
	jQuery.fn.initMenu = function() {  
    return this.each(function(){
        var theMenu = $(this).get(0);
        $('.acitem', this).hide();
        $('li.expand > .acitem', this).show();
        $('li.expand > .acitem', this).prev().addClass('active');
        $('li a', this).click(
            function(e) {
                e.stopImmediatePropagation();
                var theElement = $(this).next();
                var parent = this.parentNode.parentNode;
                if($(parent).hasClass('noaccordion')) {
                    if(theElement[0] === undefined) {
                        window.location.href = this.href;
                    }
                    $(theElement).slideToggle('normal', function() {
                        if ($(this).is(':visible')) {
                            $(this).prev().addClass('active');
                        }
                        else {
                            $(this).prev().removeClass('active');
                        }    
                    });
                    return false;
                }
                else {
                    if(theElement.hasClass('acitem') && theElement.is(':visible')) {
                        if($(parent).hasClass('collapsible')) {
                            $('.acitem:visible', parent).first().slideUp('normal', 
                            function() {
                                $(this).prev().removeClass('active');
                            }
                        );
                        return false;  
                    }
                    return false;
                }
                if(theElement.hasClass('acitem') && !theElement.is(':visible')) {         
                    $('.acitem:visible', parent).first().slideUp('normal', function() {
                        $(this).prev().removeClass('active');
                    });
                    theElement.slideDown('normal', function() {
                        $(this).prev().addClass('active');
                    });
                    return false;
                }
            }
        }
    );
});
};

$(document).ready(function() {$('.left_menu').initMenu();})
</script>


<ul class="left_menu collapsible">
	<li>
		<a class="nav_art" href="#">С чего начать</a>
		<ul class="acitem">
			<li><a class="nav_art" href="/one">Рубрика 1</a></li>
			<li><a class="nav_art" href="#">Рубрика 2</a></li>
			<li><a class="nav_art" href="#">Рубрика 3</a></li>
		</ul>
	</li>
	<li>
		<a class="nav_art" href="#">Архивы</a>
		<ul class="acitem">
			<li><a class="nav_art" href="/two">Январь (10)</a></li>
			<li><a class="nav_art" href="#">Февраль (15)</a></li>
			<li><a class="nav_art" href="#">Март (8)</a></li>
		</ul>
	</li>
</ul>


</body>
</html>




И скрипт для добавления класса активным пунктам меню.


$('ul li a.nav_art').each(function() {
		link = $(this).attr('href');
		if(link != homePage && link == window.location.href.substr(0,link.length)) $(this).addClass('active');
	});
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2014, 20:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Rorbi,
$(this).addClass('active').parents('ul').prev().click();
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2014, 20:54
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от рони Посмотреть сообщение
Rorbi,
$(this).addClass('active').parents('ul').prev().click();
эм скажите пожалуйста куда это вставить?
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2014, 21:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Rorbi
$(this).addClass('active');
добавить сюда
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2014, 23:51
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от рони Посмотреть сообщение
Rorbi,
$(this).addClass('active').parents('ul').prev().click();
Сообщение от рони Посмотреть сообщение
добавить сюда

к сожалению не помогло
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2014, 00:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Rorbi
к сожалению не помогло
ссылку плиз на где это неработает
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2014, 15:15
Аспирант
Отправить личное сообщение для Rorbi Посмотреть профиль Найти все сообщения от Rorbi
 
Регистрация: 28.02.2014
Сообщений: 36

Сообщение от рони Посмотреть сообщение
ссылку плиз на где это неработает
$('ul li a.nav_art').each(function() {
		link = $(this).attr('href');
		if(link != homePage && link == window.location.href.substr(0,link.length)) $(this).addClass('active').parents('ul').prev().click();


вот тут это не работает, не добавляется класс active для самой категории <a class="nav_art" href="#">С чего начать</a>,
а по прежнему только для той ссылки на которую я нажал

Последний раз редактировалось Rorbi, 05.07.2014 в 15:29.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2014, 15:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Rorbi,
работает
<!DOCTYPE HTML>
<html lang="ru-RU">
	<head>
    <meta charset="utf-8">
		<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
	</head>

<body>
<style>

ul.left_menu li a:hover, ul.left_menu li.active a {
	color:#FFF;
	background-color:#78bbe6;
	border:1px solid #78bbe6;
}

ul.acitem {
	list-style:none;
}

ul.left_menu a.active, ul.left_menu ul.acitem li a.active, ul.left_menu a.active:hover, ul.left_menu ul.acitem li a.active:hover {
	color:#FFF;
	background-color:#78bbe6;
	border:1px solid #78bbe6;
}
</style>
<script type="text/javascript">
	jQuery.fn.initMenu = function() {
    return this.each(function(){
        var theMenu = $(this).get(0);
        $('.acitem', this).hide();
        $('li.expand > .acitem', this).show();
        $('li.expand > .acitem', this).prev().addClass('active');
        $('li a', this).click(
            function(e) {
                e.stopImmediatePropagation();
                var theElement = $(this).next();
                var parent = this.parentNode.parentNode;
                if($(parent).hasClass('noaccordion')) {
                    if(theElement[0] === undefined) {
                        window.location.href = this.href;
                    }
                    $(theElement).slideToggle('normal', function() {
                        if ($(this).is(':visible')) {
                            $(this).prev().addClass('active');
                        }
                        else {
                            $(this).prev().removeClass('active');
                        }
                    });
                    return false;
                }
                else {
                    if(theElement.hasClass('acitem') && theElement.is(':visible')) {
                        if($(parent).hasClass('collapsible')) {
                            $('.acitem:visible', parent).first().slideUp('normal',
                            function() {
                                $(this).prev().removeClass('active');
                            }
                        );
                        return false;
                    }
                    return false;
                }
                if(theElement.hasClass('acitem') && !theElement.is(':visible')) {
                    $('.acitem:visible', parent).first().slideUp('normal', function() {
                        $(this).prev().removeClass('active');
                    });
                    theElement.slideDown('normal', function() {
                        $(this).prev().addClass('active');
                    });
                    return false;
                }
            }
        }
    );
});
};

$(document).ready(function() {$('.left_menu').initMenu();
 $('ul li a.nav_art').each(function() {
		link = $(this).attr('href');
		if( link == '/two') $(this).addClass('active').parents('ul').prev().click();
	});

})
</script>


<ul class="left_menu collapsible">
	<li>
		<a class="nav_art" href="#">С чего начать</a>
		<ul class="acitem">
			<li><a class="nav_art" href="/one">Рубрика 1</a></li>
			<li><a class="nav_art" href="#">Рубрика 2</a></li>
			<li><a class="nav_art" href="#">Рубрика 3</a></li>
		</ul>
	</li>
	<li>
		<a class="nav_art" href="#">Архивы</a>
		<ul class="acitem">
			<li><a class="nav_art" href="/two">Январь (10)</a></li>
			<li><a class="nav_art" href="#">Февраль (15)</a></li>
			<li><a class="nav_art" href="#">Март (8)</a></li>
		</ul>
	</li>
</ul>


</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выпадающее меню для внутренней навигации по закладкам на странице на javascript+css rdfhnbhf jQuery 1 13.07.2012 15:17
Выпадающее меню для внутренней навигации по закладкам на странице на javascript+css rdfhnbhf Javascript под браузер 1 13.07.2012 12:26
Подсветка выделенного элемента меню ajax-сайта crayday AJAX и COMET 0 11.05.2012 12:25
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36
JS меню работает на обычной html странице, а на юкозовском движке нет. adware Я не знаю javascript 10 16.05.2009 16:48