菜单选项卡-2中方法加载选项卡的内容

html代码

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>菜单选项卡</title>    <link rel="stylesheet" type="text/css" href="xd_menu.css">    <script src="jquery.min.js" type="text/javascript"></script>    <script src="xd_menu.js" type="text/javascript"></script>

    <script>        $(function () {            var menuData = [                { id : 1,pid : null,n : ‘菜单名称1‘,url : ‘#‘},                { id : 2,pid : null,n : ‘菜单名称2‘,url : ‘#‘},                { id : 3,pid : null,n : ‘菜单名称3‘,url : ‘#‘},                { id : 4,pid : null,n : ‘菜单名称4‘,url : ‘#‘},                { id : 5,pid : null,n : ‘菜单名称5‘,url : ‘#‘},                { id : 6,pid :3,n : ‘菜单名称6‘,url : ‘#‘},                { id : 7,pid : 3,n : ‘菜单名称7‘,url : ‘#‘},                { id : 8,pid : 3,n : ‘菜单名称8‘,url : ‘#‘},                { id : 9,pid :3,n : ‘菜单名称9‘,url : ‘#‘},                { id : 10,pid :9,n : ‘菜单名称10‘,url : ‘#‘},                { id : 11,pid : 9,n : ‘菜单名称11‘,url : ‘#‘},                { id : 12,pid :9,n : ‘菜单名称12‘,url : ‘#‘},                { id : 13,pid :9,n : ‘菜单名称13‘,url : ‘#‘},                { id : 14,pid : 13,n : ‘菜单名称14‘,url : ‘#‘},                { id : 15,pid :1,n : ‘菜单名称15‘,url : ‘#‘},

            ]            $("#xd_dy_menu1").menu();            $("#xd_dy_menu2").menu();            $("#xd_dy_menu3").menu({                type : 0,                data : menuData            });        })    </script></head><body><div class="xd_menu">    <!-- 第一个-->    <div class="dy_menu1" id="xd_dy_menu1">          <ul class="dy_menu1_ul_1">                <li class="li_has_children">                      <a href="#">一级菜单1</a>                      <ul class="ve_menu">                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单1</a></li>                      </ul>                </li>               <li><a href="#">一级菜单2</a></li>                <li><a href="#">一级菜单3</a></li>                <li class="li_has_children">                      <a href="#">一级菜单4</a>                      <ul class="ve_menu">                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单2</a></li>                            <li class="li_has_children">                                  <a href="#">二级菜单3</a>                                  <ul class="ve_menu offset">                                        <li><a href="#">三级菜单1</a></li>                                        <li><a href="#">三级菜单2</a></li>                                        <li><a href="#">三级菜单3</a></li>                                        <li><a href="#">三级菜单4</a></li>                                  </ul>                              </li>                        <li><a href="#">二级菜单4</a></li>                  </ul>            </li>            <li><a href="#">一级菜单5</a></li>        </ul>    </div>    <!-- 第二个-->    <div class="dy_menu1" id="xd_dy_menu2">          <ul class="dy_menu1_ul">                <li><a href="#">一级菜单1</a></li>                <li><a href="#">一级菜单2</a></li>                <li><a href="#">一级菜单3</a></li>                <li class="li_has_children">                      <a href="#">一级菜单4</a>                      <ul class="dy_menu1_ul">                            <li><a href="#">二级菜单1</a></li>                            <li><a href="#">二级菜单2</a></li>                            <li class="li_has_children">                                <a href="#">二级菜单3</a>                                  <ul class="dy_menu1_ul offset">                                        <li><a href="#">三级菜单1</a></li>                                        <li><a href="#">三级菜单2</a></li>                                        <li><a href="#">三级菜单3</a></li>                                        <li><a href="#">三级菜单4</a></li>                                  </ul>                            </li>                            <li><a href="#">二级菜单4</a></li>                      </ul>            </li>            <li><a href="#">一级菜单5</a></li>        </ul>    </div>    <!-- 第三个-->    <div id="xd_dy_menu3" class="dy_menu1"></div></div></body></html>

JS代码

/** * Created by maxiaodan on 2016/2/29. */(function($){    $.fn.menu = function (options) {        if (typeof options != ‘undefined‘ && options.constructor === Array) options = {data:options};        var opts = $.extend({}, $.fn.menu.defaults,options);

        var _tempMenuData = [];

        function getLevel(id) {            var _level = 0;            var _o = getMenuData(id);            while (_o != null) {                _level ++;                _o = getMenuData(_o.pid);            }            return _level;        }

        function getMenuData(id) {            for (var i=0;i<opts.data.length;i++) {                if (opts.data[i].id == id) {                    return opts.data[i];                }                return null;            }        }

        function getHtml (pid) {            var li_len = getData(pid);           if (li_len.length == 0) return null;            var _ul = $(‘<ul></ul>‘);            $.each(li_len, function (i,_d) {                var _children = getHtml(_d.id);                var _li = $(‘<li></li>‘).appendTo(_ul);

               $(‘<a href="‘+_d.url+‘"></a>‘).html(_d.n).appendTo(_li);

                if (_children != null) {                    _li.addClass(‘li-has-children‘);                    _children.appendTo(_li);                    _li.bind({                        mouseover : function(){                            _children.show();                        },                        mouseout : function () {                            _children.hide();                        }                    })                }            })

            if ( pid == null && opts.type == 1 ) {                _ul.addClass(‘dy_menu1_ul_1‘);            } else {                var _level = getLevel(pid);                _level > 0 && _ul.hide();                _ul.addClass(‘dy_menu1_ul offset‘);                //if (_level > opts.type) _ul.addClass(‘offset‘);            }            return _ul;        }

        function getData(pid) {            var _data = [];            _tempMenuData = $.grep(_tempMenuData, function (_d) {                if (_d.pid == pid) {                    _data.push(_d);                    return true;                }                return false;            },true);            return _data;        }

        return this.each(function () {            var menu = $(this);            menu.addClass(‘dy_menu1‘);            if (opts.data != null && opts.data.length > 0) {                $.merge(_tempMenuData, opts.data);                menu.append(getHtml(null));            } else {                menu.find(‘.li_has_children‘).each(function () {                    var self = $(this);                    var se_ul = self.children(‘ul‘);                    se_ul.hide();                    self.bind({                        mouseover: function () {                            se_ul.show();                        },                        mouseout: function () {                            se_ul.hide();                        }                    })                })            }        })        $.fn.menu.defaults = {            type : 1,            data : null        }    }})(jQuery);

css代码

*{padding: 0px;margin: 0px;}li{list-style: none;}a{text-decoration: none;color: #000;}.xd_menu {width: 100%;height: auto;margin-top:50px;}.dy_menu1 ul{width: 100%;height: 30px;line-height: 30px;}.dy_menu1 ul li{text-align: center;font-size: 14px;color: #000;list-style: none;width: 100px;border:1px solid #dcdcdc;position: relative;}#xd_dy_menu1 ul li{float: left;}.dy_menu1 ul li a{display: inline-block;width:100%;height: 30px;color: #000;}.dy_menu1 ul li a:hover{background: #777777;color: #fff;}.dy_menu1 ul li.li_has_children{position: relative;}.dy_menu1 ul li ul{position: absolute;display: none;z-index: 100;background: #fff;}#xd_dy_menu1 ul li ul.offset {left:100px;top:-1px;}#xd_dy_menu1 {margin-top:20px;}#xd_dy_menu2 {margin-top: 50px;}#xd_dy_menu2 ul li ul{left: 100px;top:-1px;}#xd_dy_menu3 {margin-top:200px;margin-bottom: 100px;}#xd_dy_menu3 ul li ul.offset {left:100px;top:-1px;}

注:此篇文章不是原著,感觉不错,分享出来
css代码css代码
时间: 2024-10-13 21:30:46

菜单选项卡-2中方法加载选项卡的内容的相关文章

zTree 从数据库中动态加载树形菜单

这几天做动态菜单用到了这个插件,目前用的很广泛的一个开源框架,最新发布的QUI框架就是用这个插件开发的菜单部分,因此还是很值得深入研究和学习,通过使用感觉功能很丰富,好多函数不用自己开发和编写,官网上有很详尽的API可以参考,用着算顺手但学习使用的过程中也遇到了一些困难,听过反复测试和查资料都理解了,但也在思考一个问题,怎么样才能使得最快的时间从接触一个新东西到灵活掌握的程度? 这个不仅仅是一个树形结构的菜单,每个节点左边可以有一个复选框,看了看也挺简单的,只需要在setting里面配置一个ch

MVC通过JsonResult返回Json数据,然后在视图页面中通过@Html.Partial()方法加载分部视图

首先,新建一个MVC类型的Web项目: 然后在Model文件夹下定义一个Student实体: public class Student { public int ID { get; set; } public string Name { get; set; } public string Sex { get; set; } public int Age { get; set; } } 然后新建一个Student控制器: using JsonDataWithMVC.Models; using Sy

Fragment,侧滑菜单,PullToRefresh上下拉加载

例题:Fragment,侧滑菜单,PullToRefresh上下拉加载 右键工程>Open Module Settings>Dependencies>+号Library dependency>com.android.support:design:27.0.2 ============================================= libs文件夹下加入jar包(导包): gson 和 universal-image-loader =================

cocos2dx lua中异步加载网络图片,可用于显示微信头像

最近在做一个棋牌项目,脚本语言用的lua,登录需要使用微信登录,用户头像用微信账户的头像,微信接口返回的头像是一个url,那么遇到的一个问题就是如何在lua中异步加载这个头像,先在引擎源码里找了下可能会提供这个功能的地方,发现好像没有提供类似功能,那么只能自己动手写.所以我在ImageView这个类里面添加了一个成员方法,其实可以不写在ImageView里,而且我觉得非必需情况下还是不要修改引擎源码的好,因为如果源码改动比较多的话,将来引擎版本升级会比较麻烦.我写在ImageView里纯粹是想偷

Java中动态加载jar文件和class文件

概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下的jar文件以及classes目录下的class文件,另外像spring这类框架,也可以根据指定的路径扫描并加载指定的类文件,这个技术可以实现一个容器,容纳各类不同的子应用. Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,不像C加载动态链接库只要一个文件名就可以搞定,但JDK仍提供了一整套方法来动态加载jar文件和class文件. 动态加载jar文件 // 系统类库路径 File libPath =

Chromium中网页加载进度条研究

1.     Shell.java中有成员变量:mProgressDrawable. 该成员变量在方法:onFinishInflate中被初始化. 在该类中有方法:onLoadProgressChanged,该方法中对进度条的值进行改变,并且对刷新完成事件进行反馈. 2.     上面的这个方法是在cc文件中被调用的. 上面方法对应的cc方法是shell_android.cc文件中的LoadProgressChanged方法. voidShell::LoadProgressChanged(Web

使用ajax()方法加载服务器数据

使用ajax()方法加载服务器数据 使用ajax()方法是最底层.功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值,它的调用格式如下: jQuery.ajax([settings])或$.ajax([settings]) 其中参数settings为发送ajax请求时的配置对象,在该对象中,url表示服务器请求的路径,data为请求时传递的数据,dataType为服务器返回的数据类型,success为请求成功的执行的回调函数,type为发送数据请求的

jquery mobile中显示加载中提示框和关闭提示框

在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更好一些. 先看两个方法,显示和关闭,方法来自于参考:http://blog.csdn.net/zht666/article/details/8563025 <script> //显示加载器 function showLoader() { //显示加载器.for jQuery Mobile 1.2.

javascript在html中的加载顺序

参考:[1]http://coolshell.cn/articles/9749.html(酷壳) [2]http://shaozhuqing.com/?p=2756 颜色标注分别来自于链接地址内容 通常来说,浏览器对于Javascript的运行有两大特性:1)载入后马上执行,2)执行时会阻塞页面后续的内容(包括页面的渲染.其它资源的下载).于是,如果有多个js文件被引入,那么对于浏览器来说,这些js文件被被串行地载入,并依次执行. 因为javascript可能会来操作HTML文档的DOM树,所以