выпадающее меню джейквери сворачивает подункты при переходе

123
ukrdev
На сайте с 15.11.2011
Offline
31
#11

Берем отсюда скрипт http://phpjs.org/functions/parse_url/, подключаем его выше скрипта который работает с меню

Добавить код который между begin end к вашему коду


<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('.smenu ul li').hover(
function() {
jQuery(this).find('ul').slideDown(90);
jQuery(this).addClass('menuactive');
},
function() {
jQuery(this).find('ul').slideUp(90);
jQuery(this).removeClass('menuactive');
}
);
/* begin */
var uri = parse_url(document.location.href);
jQuery('.smenu a').each(function() {
var href = jQuery(this).attr('href');
if(href == uri.path) {
jQuery(this).parent().parent().show();//если это 2-й уровень
jQuery(this).parent().children('ul').show();//если это 1-й уровень
}
});
/* end */
});
</script>
N
На сайте с 06.04.2011
Offline
53
#12

ukrdev,

к сожалению результата не дает =/ все работает как прежде даже не ломается...

все сделал как вы написали.. подключил parse_url.js выше скрипта меню jquery.js и в хэде добавил в скрипт меню в том месте где вы указали

var uri = parse_url(document.location.href);

jQuery('.smenu a').each(function() {
var href = jQuery(this).attr('href');
if(href == uri.path) {
jQuery(this).parent().parent().show();
jQuery(this).parent().children('ul').show();
}
});

спасибо вам что уделили время!

у кого есть еще варианты... может в стилях чтото упускаю



.smenu ul {
padding: 10px 15px 10px 15px;
}
.smenu li{
padding: 4px 0 10px 0;
background: url('images/smenuli.jpg') no-repeat center bottom;
}
.smenu li:last-child{
background: none;
}
.smenu li a{
display:block;
width:210px;
height:65px;
padding: 0 0 0 0;
font-size: 17px;
line-height:20px;
font-family:Tahoma, Geneva, sans-serif;
text-decoration:underline;
color:#4d91c5;
}
.smenu li a:hover{
text-decoration:none;
color:#5baae7;
}
.smenu li.active a {
text-decoration:none;
color:#5baae7;
}

.smenu ul li a img{
float:left;
border:0;
width:44px;
height:55px;
padding: 10px 18px 0 10px;
}
.smenu ul li a span{
vertical-align: middle;
display:table-cell;
text-align:left;
line-height:20px;
padding: 0 12px 0 0;
width:198px;
height:65px;
}


.smenu ul li ul{
background:none;
display:none;
padding: 5px 0 5px 30px;
}
.smenu ul li ul li{
padding: 0 0px 5px 0px;
float:none;
}
.smenu ul li ul li:last-child{
border-bottom: none;
}
.smenu ul li ul li a{
display:block;
padding: 0 10px 0 10px;
height:20px;
color:#0075b7;
background: url('images/smenulili.jpg') no-repeat left center;
}
.smenu ul li ul li a:hover{
color: #5baae7;
text-decoration:none !important;
background: url('images/smenulili.jpg') no-repeat left center;
}
.smenu li.menuactive li a{
display:block;
padding: 0 10px 0 10px;
height:20px;
color:#0075b7;
background: url('images/smenulili.jpg') no-repeat left center;
}
Грамотная верстка. Изготовление сайтов на базе CMS Joomla. (/ru/forum/897104)
дани мапов
На сайте с 06.09.2012
Offline
204
#13
nemartirosyan:
дани мапов,
=/ и без слэша также ничего не происходит, работает как прежде при переходе на подпункт сворачивается и все..

Скорее всего загвоздка может в урлах, не то прописываете в массив. Добавьте во первую строку

<div class="smenu" title="<?php echo $_SERVER['REQUEST_URI']; ?>" >
, потом на странице подпункта гляньте в исходном коде страницы - какой урл там будет и в точности такой же урл должен быть в массиве.
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
ukrdev
На сайте с 15.11.2011
Offline
31
#14

nemartirosyan, оно работает, просто дело все вот в чем...

Т.к. это меню и оно скорее всего находится вверху, поэтому при клике по пункту и после загрузки страницы, позиция курсора не меняется и соответственно срабатывает событие hover для меню.

вот этот скрипт попробуйте


jQuery(document).ready(function(){

var uri = parse_url(document.location.href);
jQuery('.smenu a').each(function() {
var href = jQuery(this).attr('href');
if(href == uri.path) {
jQuery(this).parent().parent().show();
jQuery(this).parent().parent().parent().addClass('active');
jQuery(this).parent().addClass('active');
jQuery(this).parent().children('ul').show();
}
});

jQuery('.smenu ul li').hover(
function() {
var class_name = jQuery(this).attr('class');
if(class_name != 'active') {
jQuery(this).find('ul').slideDown(90);
jQuery(this).addClass('menuactive');
}

},
function() {
var class_name = jQuery(this).attr('class');
if(class_name != 'active') {
jQuery(this).find('ul').slideUp(90);
jQuery(this).removeClass('menuactive');
}
}
);

});
N
На сайте с 06.04.2011
Offline
53
#15

ukrdev,

заменил на этот скрипт в хэде, все так же работает без изменений, сворачивается при переходе на подпункт и активный родительский...

не мой день сегодня видимо =/

в шаблоне еще есть скрипты слайда и куфона, конфликтов с ними нет - пробовал их отключать - также ничего не дает

ukrdev
На сайте с 15.11.2011
Offline
31
#16

nemartirosyan, рискну спросить,... а у вас на сайте в меню урлы какие?

<a href="#">Шумоглушители</a>
[Удален]
#17

nemartirosyan, www.unmedia.ru - там реализовано подобное

или скачайте шаблон
там js поменьше и проще разобраться

N
На сайте с 06.04.2011
Offline
53
#18
ukrdev:
nemartirosyan, рискну спросить,... а у вас на сайте в меню урлы какие?
<a href="#">Шумоглушители</a>

джумла кирилицу вставляет

/монтаж-труб.html
vlad00777
На сайте с 24.12.2009
Offline
119
#19

Ну если не получается, может все-таки через Cookies сделать? В смысле Javascript cookies, уже кто-то предлагал, но решили выбрать этот вариант.

Верстка. Качественно! Адаптивная, резиновая, с параллаксом и прочими плюшками. В ЛС.
[Удален]
#20

На джиквери надо еще плагин (файлик ) для кукисов надо подключить

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий