JavaScript - делаем активный пункт при помощи проверки текущего URL
Часто для определения активной ссылки нет возможности использовать код движка/CMS. Конечно, вариант с добавлением класса (<li class=”active”>) более предпочтителен, но тем не менее для некоторых CMS приходится прибегать к “хакам”. Полезным вариант может оказаться для тех, кому некогда / или нет желания, а иногда - возможности/ разбираться с кодом CMS Не всегда понятно, где в CMS пароль хранится, не то, чтобы файл, отвечающий именно за этот активный пункт меню.
Доступ к текущему адресу страницы мы можем получить используя document.location, который по сути даёт возможность обратиться к адресу (из адресной строки браузера) - т.е. достать адрес сайта и /REQUEST_URI
<script type="text/javascript">
$(document).ready(function(){
$('.smenu ul li').hover(
function() {
$(this).find('ul').slideDown(90);
$(this).addClass('menuactive');
},
function() {
$(this).find('ul').slideUp(90);
$(this).removeClass('menuactive');
}
);
var uri = parse_url(document.location.href);
$('.smenu a').each(function() {
var href = $(this).attr('href');
if(href == uri.path) {
$(this).parent().parent().show();//активный пункт меню второго уровня
$(this).parent().children('ul').show();//активный пункт меню первого уровня
}
});
});
</script>
Как проверить URI при наличии русских букв в URL
Всё бы хорошо, но адреса с русскими символами преобразуются в белиберду вида %DA%d0. В этом случае предложенный способ определения активного пункта меню может не сработать. Добавим проверку преобразованного URI при помощи decodeURIComponent
if(href == uri.path || href == decodeURIComponent(uri.path)) {
Метки: javascript