我目前正在使用jQuery.mmenu插件开发动态菜单。
我的菜单的定义(nav + ul)是静态的并写入index.html
子菜单是一个外部html页面,我在jQuery(document).ready部分打开,并添加了append函数。
我的问题位于表单上:
在左侧,您可以看到标准和静态实现
根据我的解决方案,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
你能帮我吗?
答案 0 :(得分:0)
您的 ul 标记缺少结束标记。
另外......在你的成功回调中你有代码:
var $ul = $menu.find( "#panel" );
$ul.append(data);
如果您尝试获取面板中的第一个列表。它应该是:
var $ul = $menu.find( "#panel>ul" );
$ul.append(data);
jQuery.mmenu插件似乎重新排列了标记。
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>');
在线程的底部,用户 FrDH 提供了一个可以帮助您的示例。
链接:https://github.com/FrDH/jQuery.mmenu/issues/57