Создать ответ 
Появляющееся меню на jQuery
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Появляющееся меню на jQuery
Комментарии былы перенесены из темы Появляющееся слева направо меню на jQuery.

(24.09.2016 11:39:03)Виталий писал(а):Работает, спасибо, так действительно проще через js чем при помощи css. У меня последняя к вам просьба. Все работает для всех страниц (корневых и вложенных) нормально с той разницей, что для корневых страниц, а они "единичные" ссылка на текущей странице не активна, согласно задумке, тут все нормально.

Для корневых страниц все тоже работает, но все ссылки активные, что логично, так как все ссылки в меню ссылаются на корневые страницы.

Например находясь на блоге на странице 2 или 3, которые находятся в папке, в меню была ссылка Блог "подсвечена" и активна и пользователь знает, что он на блоге, хотя и так конечно понятно, но тут больше вопрос визуализации, другими словами пользователь зашел на блог на корневую страницу, кликнул по меню увидел, что он на блоге и ссылка не активна, зачем переходить если ты и так на этой странице, а вот если он зашел в подкорневую директорию но все еще находясь на блоге, вот тут и хотелось бы подсветить ссылку Блог, а ссылка и так активна.

Долго объяснял, но надеюсь вы смогли понять, что хотелось бы реализовать. Спасибо за предыдущий ответ и благодарен за помощь.


(25.09.2016 07:37:45)Виталий писал(а):Здравствуйте, ссылку удалили при помощи JS $("a[href*='"+url+"']").addClass("current");
на: $("a[href*='"+url+"']").addClass("current").removeAttr("href");

Не могли бы подсказать, как сделать чтобы для страницы, точнее для кнопки (Обратная связь), которая также имеется на всех страницах не удалять href, так как эта кнопка на всех страницах работает исключая страницы, где обратная связь находится.

<div id="feedback"><a id="link_feedback" href="about.php#form" title="Написать сообщение"></a></div>

js код:
$('.ref_current').attr('title','Текущая страница');
//feedback
$("a[href*='"+url+"']").addClass("ref_current").removeAttr("href");

$('.ref_current').attr('title','Текущая страница');
//feedback
$("#link_feedback").addClass("about_feedback");
$('.about_feedback').attr('title','Написать сообщение');

При таком раскладе все работает на всех страницах, исключая саму страницу с обратной связью. Меню работает, я имею ввиду кнопку обратной связи. При наведении title появляется, но действия нет, а если удалить removeAttr("href"), то тогда ссылка в меню становится активной, как в данном случае не удалять removeAttr("href") для кнопки на странице с обратной связи.
Заранее благодарен.
25.09.2016 22:46:12
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Появляющееся меню на jQuery
По первому комментарию - тут нужно по аналогии с:
Код:
url=url.substring(url.lastIndexOf("/")+1);
$("a[href*='"+url+"']").addClass("current");
Правильно разбить URL, и просканировать ссылки в меню на предмет нахождения в них части данного URL-а.
Просто у меня сейчас на это нет времени...


По второму комментарию...
Замените:
Код:
$("a[href*='"+url+"']").addClass("current").removeAttr("href");

на:
Код:
$("#div_Menu a[href*='"+url+"']").addClass("current").removeAttr("href");

Тогда удаление ссылок будет происходить только внутри меню (того, у которого id="div_Menu").
25.09.2016 22:56:41
Найти все сообщения Цитировать это сообщение
user Не на форуме
Рядовой
*

Сообщений: 7
У нас с: Sep 2016
Сообщение: #3
RE: Появляющееся меню на jQuery
(25.09.2016 22:56:41)Admin писал(а):  По второму комментарию...
Замените:
Код:
$("a[href*='"+url+"']").addClass("current").removeAttr("href");

на:
Код:
$("#div_Menu a[href*='"+url+"']").addClass("current").removeAttr("href");

Тогда удаление ссылок будет происходить только внутри меню (того, у которого id="div_Menu").

Здравствуйте, работает, но есть один интересный момент...
Если перехожу на страницу с формой с любой корневой страницы, то все нормально, ссылка на странице с формой не активна, но если попробовать перейти на страницу с формой по ссылке, где имеется <a id="form"></a>
<div id="feedback"><a id="link_feedback" href="about.php#form"></a></div>

то текущая ссылка на странице с формой становится активной, как понимаю это все зависит от href="about.php#form", нужно в скрипте добавить относительный адрес, т.е нужно чтобы при клике на кнопку с обратной связи, где href="about.php#form" ссылка в меню была не активна, а сейчас она активна.

Попробую сам, если что отпишусь. Благодарен за помощь.
26.09.2016 07:17:49
Найти все сообщения Цитировать это сообщение
user Не на форуме
Рядовой
*

Сообщений: 7
У нас с: Sep 2016
Сообщение: #4
RE: Появляющееся меню на jQuery
Пробовал так:
Код:
var anchor=window.location.hash.replace("#","");
if (anchor!=''){if (anchor=='[color=#1E90FF]form[/color]') return;

Не работает...
26.09.2016 15:16:17
Найти все сообщения Цитировать это сообщение
user Не на форуме
Рядовой
*

Сообщений: 7
У нас с: Sep 2016
Сообщение: #5
RE: Появляющееся меню на jQuery
Здравствуйте, что-то у меня так и не получается реализовать данный момент, буду ожидать вашей помощи, сам бился Wall, но не выходит..., да и не делал так ранее, вот и ломаю сейчас голову, сейчас уже несколько нужно, а просто хочется понять как все это работать должно ...
27.09.2016 12:35:03
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Появляющееся меню на jQuery
Добавьте после строчки:
Код:
url=url.substring(url.lastIndexOf("/")+1);

еще одну строчку:
Код:
if (url.indexOf("#")>0) url=url.substring(0,url.indexOf("#"));
27.09.2016 22:36:55
Найти все сообщения Цитировать это сообщение
user Не на форуме
Рядовой
*

Сообщений: 7
У нас с: Sep 2016
Сообщение: #7
RE: Появляющееся меню на jQuery
Спасибо, работает Happy Yes

(25.09.2016 22:56:41)Admin писал(а):  По первому комментарию - тут нужно по аналогии с:
Код:
url=url.substring(url.lastIndexOf("/")+1);
$("a[href*='"+url+"']").addClass("current");
Правильно разбить URL, и просканировать ссылки в меню на предмет нахождения в них части данного URL-а.

Просьба, если у вас будет время на примере 1 страницы, которая в папке и где ссылку нужно только подсветить, чтобы пользователь знал в какой части сайта он находится, а перейти на главную страницу этого раздела он уже сейчас может, так как с ссылкой все в порядке, она активна.
Буду признателен за вашу помощь Yes
(Последний раз сообщение было отредактировано 28.09.2016 в 14:44:32, отредактировал пользователь user.)
28.09.2016 14:35:36
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #8
RE: Появляющееся меню на jQuery
Пока придумал только так...

После строчки: var url=document.location.href;

Добавьте: if (url.indexOf("/blog/")>-1) $("#div_Menu a[href*='blog.php']").addClass("blog");

Таким образом, для всех страничек вида _site.ru/blog/111.php, _site.ru/blog/aaa.php и т.д. пункт меню, содержащий ссылку на blog.php будет выделен стилем .blog.
11.10.2016 18:46:13
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #9
RE: Появляющееся меню на jQuery
(11.10.2016 18:46:13)Admin писал(а):  Пока придумал только так...

После строчки: var url=document.location.href;

Добавьте: if (url.indexOf("/blog/")>-1) $("#div_Menu a[href*='blog.php']").addClass("blog");

Таким образом, для всех страничек вида _site.ru/blog/111.php, _site.ru/blog/aaa.php и т.д. пункт меню, содержащий ссылку на blog.php будет выделен стилем .blog.

Спасибо за ответ, только что проверил. Работает, но есть проблема.

1. (url.indexOf("/blog/")>-2), так работает, а если -1 нет.
Имеется страница blog.php и если перехожу на вложенную страницу раздела этого блога, например, blog_page_2.php, то все работает, т.е. управляя классом blog я могу поменять цвет ссылки, что в принципе и требовалось.

2. Проблема состоит в том, что если уйти на другую страницу другого раздела, не важно, корневая она или нет, ссылка Блог все время "подсвечена", так как я цвет поменял...
Что касается раздела блога, то все работает прекрасно, при переходе на вложенную страницу я вижу, что я нахожусь в разделе блог и ссылка активна, при переходе назад на главную страницу, ссылка становится не активна.

Ссылка Блог остается подсвеченной для всех других разделов ...
Вот такая проблема...Scratch

P.S.: Проблема скорее всего кроется в том, что атрибут href применяется для всех страниц, а для других страниц нужно "сбрасывать", чтобы ссылка Блог не была там подсвечена...

if (url.indexOf("/blog/")>-1) $("#div_Menu a[href*='blog.php']").addClass("blog");
(Последний раз сообщение было отредактировано 16.10.2016 в 18:22:54, отредактировал пользователь ale10ey.)
16.10.2016 18:08:18
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #10
RE: Появляющееся меню на jQuery
Если Вы заменили -1 на -2, то ссылка на страницу blog.php будет подсвечиваться всегда!

Чтобы скрипт правильно работал конкретно на Вашем сайте, нужны конкретные ссылки. В приведенном мною примере код будет правильно работать для всех страничек вида _site.ru/blog/111.php, _site.ru/blog/aaa.php и т.д.

Если у Вас ссылки вида _site.ru/blog_page_2.php, _site.ru/blog_page_33.php и т.д., то в скрипт необходимо вносить изменения... Нужно просто найти что-то общее у всех этих ссылок (например, blog_page_) и искать это в URL-е.

Код:
if (url.indexOf("blog_page_")>-1) $("#div_Menu a[href*='blog.php']").addClass("blog");
16.10.2016 18:28:56
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru