使用css的动态页面添加方法

时间:2016-01-06 19:14:23

标签: javascript css dynamic mmenu

我目前正在使用jQuery.mmenu插件开发动态菜单。

我的菜单的定义(nav + ul)是静态的并写入index.html

子菜单是一个外部html页面,我在jQuery(document).ready部分打开,并添加了append函数。

我的问题位于表单上:

Good version / bad version

在左侧,您可以看到标准和静态实现

根据我的解决方案,CSS似乎不适用。

我的代码:

的index.html

<html>
    <head>
        <meta charset="utf-8" />
        <meta name="author" content="www.frebsite.nl" />
        <meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=yes" />

        <title>jQuery.mmenu demo</title>

        <link type="text/css" rel="stylesheet" href="css/demo.css" />
        <link type="text/css" rel="stylesheet" href="../dist/core/css/jquery.mmenu.all.css" />

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript" src="../dist/core/js/jquery.mmenu.min.all.js"></script>
        <script type="text/javascript">
            jQuery(document).ready(function( $ ) {  
                var $menu = $("#menu").mmenu({
                       "extensions": [
                          "pageshadow"
                       ],
                       "counters": true,
                       "navbar": {
                          "title": "Ressource List"
                       },
                       "navbars": [
                          {
                             "position": "top",
                             "content": [
                                "searchfield"
                             ]
                          },
                          {
                             "position": "top",
                             "content": [
                                "prev",
                                "title",
                                "close"
                             ]
                          }
                       ],
                       "sectionIndexer": true
                });

                var api = $("#menu").data( "mmenu" );

                api.bind( "init", function() {

                    $.ajax({
                        // options to retrieve the submenu
                        url:"include/menu.html",
                        type : 'GET',
                        dataType : 'html'
                    }).success(function(data) {
                        var $ul = $menu.find( "#panel" );
                        $ul.append(data);
                        $("body").addClass("body");
                    });                   

                });

                api.init( $("#panel") );

            });
        </script>   
    </head>

    <body>
        <!-- The page -->
        <div class="page">
            <div class="header">
               <a href="#menu"></a>
               Index
            </div>
        </div>

        <!-- The menu -->
        <nav id="menu">
            <ul id="panel">

            </nav>
        </nav>
   </body>
</html>

menu.html

    <ul>
    <li><a href="">Home</a></li>
    <li><span>Room</span>
        <ul>
            <li><a href="">Room11</a></li>
            <li><a href="">Room12</a></li>
        </ul>
    </li>
    <li><span>Room2</span>
        <ul>
            <li><a href="">Room21</a></li>
            <li><a href="">Room22</a></li>
        </ul>
    </li>
    <li><a href="">Update data</a></li>
</ul>

为了简化问题,我使用了套餐中包含的基本示例:http://mmenu.frebsite.nl/download.html

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

不确定这是否影响了......

您的 ul 标记缺少结束标记。

另外......在你的成功回调中你有代码:

var $ul = $menu.find( "#panel" );
$ul.append(data);

如果您尝试获取面板中的第一个列表。它应该是:

var $ul = $menu.find( "#panel>ul" );
$ul.append(data);

jQuery.mmenu插件似乎重新排列了标记。

适用于1级:

var $menu = $('nav#menu').mmenu();
var api = $('nav#menu').data('mmenu');
$('#btnAdd').click(function () {
    var $ul = $menu.find('#test>ul');
    $ul.append('<li><a href="#">Home12</a></li>\
                <li><a href="#about">About us</a></li>\
                <li><a href="#contact">Contact</a></li>');
});

<button id="btnAdd">Add</button>
<nav id="menu">
    <ul id="test"></ul>
</nav>

这仅适用于一个级别。如果我尝试添加嵌套列表项,它似乎不起作用。

不适用于嵌套级别:

$ul.append('<li><a href="#">Home12</a></li>\
        <li><a id="about2" href="#about">About us</a><ul><li><a href="#about">About us</a></li></ul></li>\
        <li><a href="#contact">Contact</a></li>');

这个github线程可以帮助......

在线程的底部,用户 FrDH 提供了一个可以帮助您的示例。
链接:https://github.com/FrDH/jQuery.mmenu/issues/57