Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   скрипт адаптивного выпадающего меню (https://javascript.ru/forum/jquery/85703-skript-adaptivnogo-vypadayushhego-menyu.html)

Anatol-karel 15.01.2024 15:05

скрипт адаптивного выпадающего меню
 
Есть сайт походвкарелию.рф. При изменении ширины экрана(смартфон) скрипт создает форму выпадающего меню. На кнопке появляется "Меню". При клике по ней выпадает сформированные пункты из горизонтального основного меню. При клике на пункте выпавшего меню происходит переход на требуемую страницу. Но при нажатии на стрелку назад в браузере Chrom или Яндекс открывается главная страница (откуда и перешли на другую), но на кнопке не "Меню" , а название страницы, с которой вернулись. Как это убрать? Как обратиться к тексту кнопки, чтобы его поменять?
Скрипт:
$('<form action="#"><select /></form>').appendTo("#mainav");
$("<option />",{selected:"selected",value:"Menu",text:"Мен "}).appendTo("#mainav select");
$("#mainav a").each(function(){var e=$(this);
if($(e).parents("ul ul ul").length>=1){$("<option />",{value:e.attr("href"),text:"- - - "+e.text()}).appendTo("#mainav select")}
else if($(e).parents("ul ul").length>=1){$("<option />",{value:e.attr("href"),text:" - "+e.text()}).appendTo("#mainav select")}
else if($(e).parents("ul").length>=1){$("<option />",{value:e.attr("href"),text:""+e.text()}).append To("#mainav select")}
else{$("<option />",{value:e.attr("href"),text:e.text()}).appendTo( "#mainav select")}});
$("option:first").fadeOut(1000); /* я скрыл пункт "Меню" в выпадающем списке */
$("#mainav select").change(function(){
if($(this).find("option:selected").val()!=="#"){
window.location=$(this).find("option:selected").va l()
}});

Nexus 15.01.2024 18:43

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Anatol-karel 15.01.2024 19:20

код все-равно не запустится. Нужны CSS, библиотеки и пр.

$(document).ready(function(){
$('<form action="#"><select /></form>').appendTo("#mainav");
$("<option />",{selected:"selected",value:"Menu",text:"Меню"}).appendTo("#mainav select");
$("#mainav a").each(function(){var e=$(this);
if($(e).parents("ul ul ul").length>=1){$("<option />",{value:e.attr("href"),text:"- - - "+e.text()}).appendTo("#mainav select")}
else if($(e).parents("ul ul").length>=1){$("<option />",{value:e.attr("href"),text:"  - "+e.text()}).appendTo("#mainav select")}
else if($(e).parents("ul").length>=1){$("<option />",{value:e.attr("href"),text:""+e.text()}).appendTo("#mainav select")}
else{$("<option />",{value:e.attr("href"),text:e.text()}).appendTo("#mainav select")}});
/* $("option:first").fadeOut(1000); */   /* я скрыл пункт "Меню" в выпадающем списке */
$("#mainav select").change(function(){
    if($(this).find("option:selected").val()!=="#"){
    window.location=$(this).find("option:selected").val()
}});
$("#mainav form select option").removeAttr('selected');
});

voraa 15.01.2024 22:30

Трудно предлагать варианты, не имея возможность попробовать.
Попробуйте строку 3 заменить на
var optmenu = $("<option />",{value:"Menu",text:"Меню"});
optmenu.prop('selected', true);
optmenu.appendTo("#mainav select");

и убрать строку14

Anatol-karel 16.01.2024 09:07

Так вообще не срабатывает. Горизонтальное меню скрывается(это видимо CSS срабатывает), а кнопка не появляется.
Как бы запустить скрипт с нуля при возврате на страницу?
14-й строкой я уже пытался поэкспериментировать.
Откуда вообще может браться текст предыдущей страницы?
Можно как-то селектором выбрать только кнопку?
Как ни пытался, выбирается весь блок <select>.
А... Пардон. Что-то , видно, в первый раз сделал не так. Попробовал снова.
Работает так же, как первоначальный вариант.

Anatol-karel 19.01.2024 13:40

Похоже, надо с начала делать скрипт, скажем, Бургер-меню.
Но опять засада. Чего то я не догоняю.
Полоска <span> возле логотипа рисуется, а :before и :after нет - https://походвкарелию.рф/testindex.html

Anatol-karel 19.01.2024 14:28

это получилось. Иду дальше.


Часовой пояс GMT +3, время: 19:40.