热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通用菜单JQuery插件设计

终于Jquery菜单的开发暂时告一段落,赶紧抓时间写了这个通用菜单Jquery插件的设计。尽量想把开发的一个思路阐述清楚,细节之处应该还有很多地方有待完

终于Jquery菜单的开发暂时告一段落,赶紧抓时间写了这个通用菜单Jquery插件的设计。尽量想把开发的一个思路阐述清楚,细节之处应该还有很多地方有待完善。至于技术方面的细节我想通过代码去了解应该是最直接的。

1.   引言

参见 B/S通用菜单概要设计,B/S通用菜单需求

2.   需求说明

l  系统的菜单项可方便的进行配置。包括名称、顺序、图标、菜单类型、菜单的URL或执行的函数、菜单状态信息及子菜单等。

l  可实现菜单多级组织方式,每个菜单项下可挂子菜单。

l  一级菜单位于页面顶部,logo下,以横向方式展现。

l  显示菜单的频道有两级,默认只显示第一级频道,当需要显示第二级频道时,在一级频道下方再扩充出二级频道,二级频道用于显示当前级别的菜单。

l  可支持多种类型的菜单项。

l  菜单与系统模块之间的关联可灵活配置扩充,可直接配置模块URL,或者配置客户端JS函数。客户端JS函数可被重写进行自定义扩充。

l  用于B/S框架,可跨主流浏览器。

l  达到较好的性能要求

l  有较强的灵活性和扩展性

l  除系统导航可使用外,也可以用于功能页面中。

3.   通用菜单JQuery插件结构   

JQuery插件为了更好的扩充性,主要分成两部分,菜单主体部分和菜单元素。对应于具体的JQuery插件,分别为jquery.gmenu和jquery.buttonItem。把jquery.buttonItem分离成为一个单独的插件,使之类似于一个控件的容器,这样便于扩充菜单项的显示样式, 甚至菜单项中显示checkbox或者下拉列表等控件。

为了更好的实现jquery.gmenu的功能,在jquery.gmenu中又构造了一个gmenu的内部对象,用于封装具体的菜单业务逻辑。

下面是菜单JQuery插件的类图。

 

 

1.         MenuItem       传入菜单的Json对象

属性:

             ID: "",             //菜单ID

        Name: "",           //菜单名称

        Title:"",           //菜单标题

        ParentID:"",        //父菜单ID

        Sequence:0,         //菜单顺序

        IsUse:1,            //是否使用

        Icon:"",            //菜单图标

        NavigationType:"",  //导航方式

        LinkType:"",        //链接方式

        ModuleInfo:"",      //模块信息

        Parameter:"",       //菜单参数

        IsInitialize:0,        //是否初始化

        SubMenus: null,     // 包含子菜单json对象的数组

 

        Active:false,                //菜单是否激活状态

     Enabled:"",         //菜单是否可用

        Target:"",           //菜单的URL打开目标

         下面的参数在菜单生成过程中产生,不需要赋值

        $submenuDIV      //如果包含子菜单则表明子菜单所在的div的jquery对象

        $parentMenuItem  //如果有父菜单则表明父菜单的li的jquery对象

                   $menuRoot               //菜单的根 div的jquery对象               

2.         Jquery.buttonItem         菜单元素插件

方法:

init   初始化插件

         参数opts,传入menuItem JSON对象

click          点击方法

enable      按钮项状态置为Enabled

disable     按钮项状态置为Disabled

setActive 设置按钮为活动状态

setInactive设置按钮为非活动状态

destroy    销毁插件

3.         Jquery.gmenu         菜单插件

方法:

init   初始化插件

         参数

options            菜单插件的选项,可设置如下参数:

                       showDelay: 200,                //菜单显示延时

        hideDelay: 200,                //菜单隐藏延时

        ChannelMenuMinWidth: 50,      //频道菜单最小宽度

        VSubMenuMinWidth: 100,          //垂直子菜单最小宽度

        HSubMenuMinWidth: 100,          //水平子菜单最小宽度

        MenuItemPlugin : "buttonItem"  //菜单项插件名称

        onClick:null                              //菜单的点击事件

                   点击事件的方法需要包括两个参数(e, menuItem)

                    e 事件对象

                    menuIem 点击菜单的MenuItem对象

menuData      MenuItem的JSON数据结构

4.         gmenu     菜单类,目前这个类是在插件的闭包空间内,不能被外界访问,设计这个类主要是为了把一些方法进行很好的封装以利于后面的扩充。

4.  实现效果

 

5.   待完善的方面
  1. Jquery.gmenu中还需要设计一些增加、删除菜单项的方法
  2. 对Jquery.gmenu实现destroy方法
  3. 菜单项可带图标
  4. 菜单的样式可通过参数传入
  5. url的target可通过parameter进行设置

jquery菜单代码下载

转:https://www.cnblogs.com/fountain/archive/2012/04/07/jquerymenu.html



推荐阅读
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 热血合击脚本辅助工具及随机数生成器源码分享
    本文分享了一个热血合击脚本辅助工具及随机数生成器源码。游戏脚本能够实现类似真实玩家的操作,但信息量有限且操作不可控。热血合击脚本辅助工具可以帮助玩家自动刷图、换图拉怪等操作,并提供了雷电云手机的扩展服务。此外,还介绍了使用mt_rand函数作为随机数生成器的代码示例。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
邪恶尽头是纯洁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有