Как на самом деле работает mod_rewrite.
Строка с которой работает RewriteRule содержит только index.php, а do=addnews&id=238 попадает в %{QUERY_STRING}.
Получилось реализовать переход с последней ссылки при помощи shift+tab, чтобы подменю не закрывалось, таким образом.
$(document).ready(function () { $('.menu-drop__sp > a').focus( function () { $(this).parents('.menu-drop__sp').addClass('focus-menu'); } ); ///////// document.addEventListener('keydown', function (e) { let isTabPressed = (e.key == 'Tab' || e.keyCode == 9); if (e.shiftKey && isTabPressed) { $('.menu-drop__sp ul li:last-child a').blur( function () { $(this).parents('.menu-drop__sp').addClass('focus-menu'); } ); } else { $('.menu-drop__sp ul li:last-child a').blur( function () { $(this).parents('.menu-drop__sp').removeClass('focus-menu'); } ); } }); ////////// $('.menu-drop__sp > a').hover( function () { $('.menu-drop__sp').removeClass('focus-menu'); } ); $(document).click( function (e) { if (!$('.menu-drop__sp ul a').is(e.target)) { $('.menu-drop__sp').removeClass('focus-menu'); }; } );});
Не могу понять, почему не работает такой вариант. Мне ведь по сути не надо добавлять класс, только удалить, если на последней ссылке в подменю нажимается только tab без shift
$(document).ready(function () { $('.menu-drop__sp > a').focus( function () { $(this).parents('.menu-drop__sp').addClass('focus-menu'); } ); ///////// document.addEventListener('keydown', function (e) { let isTabPressed = (e.key == 'Tab' || e.keyCode == 9); if (!e.shiftKey && isTabPressed) { $('.menu-drop__sp ul li:last-child a').blur( function () { $(this).parents('.menu-drop__sp').removeClass('focus-menu'); } ); } }); ////////// $('.menu-drop__sp > a').hover( function () { $('.menu-drop__sp').removeClass('focus-menu'); } ); $(document).click( function (e) { if (!$('.menu-drop__sp ul a').is(e.target)) { $('.menu-drop__sp').removeClass('focus-menu'); }; } );});
А при чём тут атрибут "rel"?
Ошибся. Конечно же атрибут href. Спасибо всем за подсказку. Действительно, лучше сделать при помощи php, что и попытаюсь реализовать
Всё работает как надо. Спасибо большое. Очень помогли)
Данный вариант работает не так, как надо. При изменении размера класс постоянно добавляется и убирается независимо от того, есть скроллинг или нет. Пример в видео.
Может я что-то не так сделал?
window.addEventListener("resize", function () { let mainHeight = document.documentElement.clientHeight; let scrolHeight = Math.max( document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight ); if (scrolHeight > mainHeight) { document.body.classList.toggle('scroll'); } });
Вот с этим сложнее, могу только сделать, чтобы при любом клике оно пропадало
Чтобы за пределами - простого ничего в голову не приходит.
Спасибо большое за подсказку с :last-child. Забыл про неё.
По-поводу клика вне блока подменю нашёл такой вариант. Вроде всё работает. Собственно весь код
$(document).ready(function () { $('.nav-top a').focus( function () { $(this).parents('.nav-top__sp').addClass('focus-menu'); } ); $('.nav-top__sp ul li:last-child a:last-child').focusout( function () { $(this).parents('.nav-top__sp').removeClass('focus-menu'); } ); $(document).click( function (e) { if (!$('.nav-top__sp ul').is(e.target)) { $('.nav-top__sp').removeClass('focus-menu'); }; });});
Буду признателен подсказке, если считаете, что что-то не так или лучше сделать по-другому
Это я так с ходу не скажу. Как-то логику скрипта менять, чтобы при переходе на пункт подменю класс с родительского пункта не убирался. Там на самом деле разные варианты могут быть.
$(document).ready(function () { $('.nav-top a').focus( function () { $(this).parents('.nav-top__sp').addClass('focus-menu'); } ); $('.nav-top a.focus-end').focusout( function () { $(this).parents('.nav-top__sp').removeClass('focus-menu'); } );});
Без понятия😀
Как там Милторг? 🤔
У вас подменю скрытое, если нет того самого класса. Как только уходит фокус с основного пункта, класс убирается и подменю скрывается, поэтому на нём код не срабатывает. Надо сделать так, чтобы подменю не скрывалось.
Как же тогда можно сделать? Изначально ведь подменю должно быть скрыто
Я проверял, всё работает.