Выбрать часть ссылки
Всем здрасьте!
Помогите пожалуйста новичку! :help: Мне необходимо выделить активную кнопку меню. Все бы просто, да не все. a href в <li> имеет значение (пример) project.php?id=ob_info_vvod_info а вся ссылка http://сайт/mat/project.php?id=ob_info_vvod_info. Сама процедура выделения активной кнопки стандртна: var url=document.location.href; $.each($(".menu_main.blue a"),function(){ if(this.href==url){$(this).addClass('blue_on');}; }) Но затык в переменной url, она не соответствует моему href. Как обрезать url до href ? Навернякапросто, но не нашел нигде доходчивой информации. |
Это не так. Атрибут "href" содержит именно то что написано, а вот свойство href всегда содержит полную ссылку:
<a href="project.php?id=ob_info_vvod_info">link</a> <script> var a = document.querySelector('a'); alert([ 'document.location.href = ' + document.location.href, 'a.getAttribute(\'href\') = ' + a.getAttribute('href'), 'a.href = ' + a.href ].join('\n')); </script>Если же нужно обрезать именно параметры: alert( 'project.php?id=ob_info_vvod_info'.replace(/\?.*?$/,'') ); |
Цитата:
$(document).ready(function(){ /*Start DocumentReady*/ var url= window.location.href; $.each($(".menu_main.blue li a"),function(){ if(this.href==url){ $(this).css({'color' : '#005388', 'background' : '#ececec', 'background-position' : '3px 50%', 'box-shadow' : '0 3px 3px rgba(0, 0, 0, .4) inset' }); }; }) }); А как сделать правильно? Не менять свойства css, а через добавление класса. При добавлении у меня получается какой-то промежуточный результат, т.е. кнопка меняется в цвете, но не "вдавливается", хотя все свойства css указываю. Т.е. если просто заменить класс на все меню, то все ок - одни кнопки меняются на другие, а вот в данном коде как-то не до конца все происходит, наверное что-то нужно удалить, но пробовал удалять все подряд (через removeClass) и - фиг. |
Очевидно тут вопрос приоритета css. Без всякого js вручную пропишите класс и посмотрите почему он не действует.
|
Цитата:
Я совсем еще новичок в джаве, подскажите, пжлст, новый класс должен перекрывать все прежние или прежние надо удалять? |
js не делает с классми ничего, чего бы вы не делали сами вручную. Разницы в поведении быть не должно. Смотрите в "инспекторе" чем отличается указанный вручную класс от того что навесили через js.
|
Цитата:
|
Решил вопрос со стилями - добавил parent() итог:
$(this).parent().addClass('activeLink'); |
3-й день изучаю jquery,а уже решил поделиться опытом (встречал вопрос на просторах инета). В общем сделал вложенное меню. У меня главное меню вертикальное, а доп меню горизонтальное уже в разделе (ну перешел по ссылке и в появившейся рабочей области менюшка раздела... не люблю я эти каскадные меню, поэтому сделал так). Задача стояла не отцепить нажатую кнопку главного меню при нажатии на кнопки вложенной менюшки раздела. В общем решил так:
$(document).ready(function(){ $.each($(".menu_main.blue li a"),function(){ var url2= window.location.href.slice(window.location.href.indexOf('=')+1,window.location.href.indexOf('=')+5); var link2 = this.href.slice(this.href.indexOf('=')+1, this.href.indexOf('=')+5); if(link2==url2){ $(this).parent().addClass('activeLink'); }; }); }); $(document).ready(function(){ $.each($(".menu_proj li a"),function(){ var link = this.href; var url= window.location.href; if(link==url){ $(this).parent().addClass('activeLinkproj'); }; }); }); Кнопки вложенного меню и главное меню имеют общий корень в хрефе. Например (1 раздел главного меню): http://сайт/mat/project.php?id=ob_info_vvod_info - это ссылка кнопки главного меню и по совместительству первая вкладка вложенного меню раздела http://сайт/mat/project.php?id=ob_info_razv - это следующая кнопка вложенного меню. И т.д. Отличаются они только окончанием, а корень (ob_info) у них общий. Поэтому я решил вырезать из ссылки 4 символа после знака равенства (ob_i, больше не стал, т.к. другие разделы главного чуть короче называются) - это будет маяк для кнопки главного меню (url2=link2), а кнопки вложенного меню (функция №2) будут реагировать на полное совпадение адреса окна и хрефа (URL=href). В итоге ссылка меняется, активные кнопки внутри раздела отмечаются и в главном меню кнопка раздела не отцепляется пока находишься внутри этого самого раздела. Вот как-то так:) |
Часовой пояс GMT +3, время: 19:40. |