JQuery и PHP - я не могу показать более одного подменю в моем меню

0

Я создаю меню с подменю.

Я использую 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);
        }
    }
}
?>
Теги:

1 ответ

0

Проблема связана с вашей функцией подменю(). Предположим, что пункт меню имеет 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>';
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню