У меня есть меню навигации (меню внутри меню) вроде этого:
<nav id = "ml-menu" class = "menu">
<div class = "menu__wrap">
<ul data-menu = "main" class = "menu__level" tabindex = "-1" role = "menu" aria-label = "All">
<li class = "menu__item" role = "menuitem"><a class = "menu__link" data-submenu = "submenu-1" aria-owns = "submenu-1" href = "./index.php?lvl=AP">AP</a></li>
</ul>
<ul data-menu = "submenu-1" id = "submenu-1" class = "menu__level" tabindex = "-1" role = "menu" aria-label = "Vegetables">
<li class = "menu__item" role = "menuitem"><a class = "menu__link" data-submenu = "submenu-1-1" aria-owns = "submenu-1-1" href = "./index.php?lvl=AP">AP1</a></li>
</ul>
</div>
</nav>
Я хочу установить PHP vriable при щелчке по пункту меню, и он работает, только если я удалю data-submenu, что означает, что я хочу иметь возможность перейти ко второму меню.
Я использую $_GET['lvl'] для чтения моей переменной.
Есть идеи, как это решить, или сделать по-другому?
Мой код js:
<script>
(function() {
var menuEl = document.getElementById('ml-menu'),
mlmenu = new MLMenu(menuEl, {
backCtrl : false, // show back button
onItemClick: loadDummyData // callback: item that doesn´t have a submenu gets clicked - onItemClick([event], [inner HTML of the clicked item])
});
// mobile menu toggle
var openMenuCtrl = document.querySelector('.action--open'),
closeMenuCtrl = document.querySelector('.action--close');
openMenuCtrl.addEventListener('click', openMenu);
closeMenuCtrl.addEventListener('click', closeMenu);
function openMenu() {
classie.add(menuEl, 'menu--open');
closeMenuCtrl.focus();
}
function closeMenu() {
classie.remove(menuEl, 'menu--open');
openMenuCtrl.focus();
}
var gridWrapper = document.querySelector('.content');
function loadDummyData(ev, itemName) {
ev.preventDefault();
closeMenu();
gridWrapper.innerHTML = '';
classie.add(gridWrapper, 'content--loading');
setTimeout(function() {
classie.remove(gridWrapper, 'content--loading');
$('#table_id').DataTable();
gridWrapper.innerHTML = 'some code...'
}, 700);
}
})();
</script>
Да, именно так, я хочу установить PHP vriable при щелчке по пункту меню, приведенный выше код возвращает пустую переменную при чтении с $_GET['lvl']
data-submenu отвечает за отображение подменю при наведении курсора? В этом случае переменная PHP может быть установлена только в том случае, если вы действительно делаете запрос к серверу (то есть щелкаете ссылку).
data-submenu отвечает за отображение подменю при нажатии. но я все еще получаю пустую переменную.
Код в вопросе может привести только к PHP-переменной $_GET['lvl'] со значением AP. Если нет, значит в вопросе не хватает чего-то важного. Якорь когда-либо открывался или существуют обработчики событий JS, которые вообще предотвращают открытие целевого URL? Или целевой URL-адрес переписывается каким-то JS-скриптом перед его запросом? Или, или, или… - как видите, вам нужно будет предоставить более подробную информацию, на данный момент проблема не связана с кодом, опубликованным выше.
Я добавил код js. Спасибо.
Это также работает, когда я открываю пункт меню на новой странице.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


К сожалению, неясно, о чем вы спрашиваете. Вы хотите установить переменную PHP при щелчке по пункту меню? Опубликованный вами URL-адрес должен позволить вам читать
$_GET['lvl']в вашем PHP-коде, и он будет иметь значениеAP.