Я создаю меню с подменю.
Я использую jQuery для отображения/скрытия подменю, и я использую PHP для получения значений таблицы...
Короче говоря, jQuery существует для визуальных эффектов, а php используется для отображения правильных значений меню/подменю из моей базы данных.
Но у меня здесь проблемы. Когда я нажимаю ссылку меню, отображается только одно подменю, первое.
Что я могу сделать, чтобы показать все подменю?
Я отключил jQuery много раз, и он показывает все подменю, когда сценарий jQuery отключен.
Просмотр меню
<?php
function menu($url,$name){
echo "
<ul>
<li class='Item1'><a>$name</a></li>
<ul class='submenu'>
";
}
?>
<?php
function submenu($suburl,$subname){
echo "
<li class='menuitem'><a>$subname</a></li>
</ul>
</ul>
";
}
?>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<style>
li{
float:left;
display:inline;
margin-left: 50px;
}
.menuitem{
display:none;
}
</style>
<script>
jQuery(function () {
$('.Item1 a').click(function () {
$(this).parent().next().children('.menuitem').toggle();
});
})
</script>
Модель меню
<?php
include(PATH_PUBLIC . '/admin/modules/menu/view/menu_view.php');
function menuModel()
{
connect();
$menu = ("SELECT * FROM menu");
$val = DB_array($menu, 'a+');
$ii = count($val);
$ii = $ii - 1;
for ($i = 0; $i <= $ii; $i++) {
$name = $val[$i]['friendlyname'];
$url = $val[$i]['url'];
$id = $val[$i]['menu_id'];
menu($url, $name);
$submenu = ("SELECT * FROM submenu WHERE menu_id=$id");
$valor = DB_array($submenu, 'a+');
$qq = count($valor);
$qq = $qq - 1;
for ($q = 0; $q <= $qq; $q++) {
$subname = $valor[$q]['name'];
$suburl = $valor[$q]['url'];
submenu($suburl, $subname);
}
}
}
?>
Проблема связана с вашей функцией подменю(). Предположим, что пункт меню имеет 4 подменю. Хотя в первом подменю, когда подменю() выполняется в первый раз, вы закрываете оба элемента <ul>
, что означает, что 2-й, 3-й и 4-й подменю находятся за пределами списков.
Измените функцию submenu() на
function submenu($suburl,$subname){
echo "<li class='menuitem'><a>$subname</a></li>";
}
И закрыть <ul>
сразу после выхода второй for
......
for ($q = 0; $q <= $qq; $q++) {
$subname = $valor[$q]['name'];
$suburl = $valor[$q]['url'];
submenu($suburl, $subname);
}
echo '</ul></ul>';
}