使用Jquery的多级下拉菜单

我想用jQuery设计一个多级菜单。 我已经写了一些代码。你可以在这里看到演示。 这一切都很好。 但我想动态制作多级下拉菜单。

脚本

$('ul#menu > li').hover(function(){ //$('#drop' , this).css('display','block'); $('.drop' , this).delay(20).slideDown(200); }, function(){ $('.drop' , this).delay(20).slideUp(200); });​ 

HTML

  

CSS

 ul#menu { margin:0; padding:0; } ul#menu > li { list-style:none; float:left; margin:0; padding:0; position:relative; } ul#menu a { text-decoration:none; color:#fff; background:red; display:block; padding:10px; } ul#menu > li ul.drop { margin:0; padding:0; width:150px; position:absolute; display:none; } ul#menu > li ul.drop ul { margin:0; padding:0; width:150px; position:absolute; display:none; left:150px; top:0; } ul#menu > li ul li { margin:0; padding:0; list-style:none; position:relative; }​ 

您需要稍微更改jQuery脚本以适应多级菜单,如下所示:

 $('ul#menu li').hover(function(){ $(this).children('ul').delay(20).slideDown(200); }, function(){ $(this).children('ul').delay(20).slideUp(200); }); 

并改变这样的HTML:

  

你的CSS很好。 您可以在http://jsfiddle.net/297t6/查看更新的多级代码

 $(document).ready(function () { var data = [{ 'Name': 'Home', 'Url': '#', 'SubMenu': [{ 'Name': 'Home1', 'Url': '#' }, { 'Name': 'Home2', 'Url': '#' }, { 'Name': 'Home3', 'Url': '#' }, { 'Name': 'Home4', 'Url': '#' }, ] }, { 'Name': 'AboutUs', 'Url': '#', 'SubMenu': [{ 'Name': 'AboutUs1', 'Url': '#' }, { 'Name': 'AboutUs2', 'Url': '#' }, { 'Name': 'AboutUs3', 'Url': '#' }, { 'Name': 'AboutUs4', 'Url': '#' }, ]}]; if (data.length > 0) { $('body').prepend('
    '); $.each(data, function (i, entity) { var liHtml = []; liHtml.push('
  • ' + entity.Name + ''); if (entity.SubMenu.length > 0) { liHtml.push(''); } liHtml.push('
  • '); $('ul#menu').append(liHtml.join('')); }); } $('ul#menu > li').hover(function () { //$('#drop' , this).css('display','block'); $('.drop', this).delay(20).slideDown(200); }, function () { $('.drop', this).delay(20).slideUp(200); }); });

现场演示请看这个链接: http : //jsfiddle.net/nanoquantumtech/Z5NXv/