zoukankan      html  css  js  c++  java
  • easyui源码翻译1.32--MenuButton(菜单按钮)

    前言

    扩展自$.fn.linkbutton.defaults。使用$.fn.menubutton.defaults重写默认值对象。。下载该插件翻译源码

    菜单按钮是下拉菜单的一部分。它伴随着linkbutton和menu组件。在用户点击linkbutton之前菜单是隐藏的,当用户用鼠标点击或移动到linkbutton上面的时候菜单才会显示。

    源码

     

    /**
     * jQuery EasyUI 1.3.2
     * 
     *翻译 qq  1364386878 菜单按钮
     */
    (function ($) {
        //初始化方法
        function init(jq) {
            var options = $.data(jq, "menubutton").options;
            var btn = $(jq);
            btn.removeClass("m-btn-active m-btn-plain-active").addClass("m-btn");
            btn.linkbutton($.extend({}, options, { text: options.text + "<span class="m-btn-downarrow">&nbsp;</span>" }));
            if (options.menu) {
                $(options.menu).menu({
                    onShow: function () {
                        btn.addClass((options.plain == true) ? "m-btn-plain-active" : "m-btn-active");
                    }, onHide: function () {
                        btn.removeClass((options.plain == true) ? "m-btn-plain-active" : "m-btn-active");
                    }
                });
            }
            _enable(jq, options.disabled);
        };
        //启用菜单按钮
        function _enable(jq, disabled) {
            var options = $.data(jq, "menubutton").options;
            options.disabled = disabled;
            var menubutton = $(jq);
            if (disabled) {
                menubutton.linkbutton("disable");
                menubutton.unbind(".menubutton");
            } else {
                menubutton.linkbutton("enable");
                menubutton.unbind(".menubutton");
                menubutton.bind("click.menubutton", function () {
                    showMenu();
                    return false;
                });
                var timer = null;
                menubutton.bind("mouseenter.menubutton", function () {
                    timer = setTimeout(function () {
                        showMenu();
                    }, options.duration);
                    return false;
                }).bind("mouseleave.menubutton", function () {
                    if (timer) {
                        clearTimeout(timer);
                    }
                });
            }
            function showMenu() {
                if (!options.menu) {
                    return;
                }
                $("body>div.menu-top").menu("hide");
                $(options.menu).menu("show", { alignTo: menubutton });
                menubutton.blur();
            };
        };
    
        //实例化组件
        $.fn.menubutton = function (target, parm) {
            if (typeof target == "string") {
                return $.fn.menubutton.methods[target](this, parm);
            }
            target = target || {};
            return this.each(function () {
                var menubutton = $.data(this, "menubutton");
                if (menubutton) {
                    $.extend(menubutton.options, target);
                } else {
                    $.data(this, "menubutton", {
                        options: $.extend({},
                            $.fn.menubutton.defaults,
                            $.fn.menubutton.parseOptions(this),
                            target)
                    });
                    $(this).removeAttr("disabled");
                }
                init(this);
            });
        };
        //默认方法
        $.fn.menubutton.methods = {
            //返回属性对象
            options: function (jq) {
                return $.data(jq[0], "menubutton").options;
            },
            //启用菜单按钮
            enable: function (jq) {
                return jq.each(function () {
                    _enable(this, false);
                });
            },
            //禁用菜单按钮
            disable: function (jq) {
                return jq.each(function () {
                    _enable(this, true);
                });
            },
            //销毁菜单按钮
            destroy: function (jq) {
                return jq.each(function () {
                    var options = $(this).menubutton("options");
                    if (options.menu) {
                        $(options.menu).menu("destroy");
                    }
                    $(this).remove();
                });
            }
        };
        //解析器
        $.fn.menubutton.parseOptions = function (target) {
            var t = $(target);
            return $.extend({},
                $.fn.linkbutton.parseOptions(target),
                $.parser.parseOptions(target, ["menu", { plain: "boolean", duration: "number" }]));
        };
        //默认属性  继承了linkbutton
        $.fn.menubutton.defaults = $.extend({},
            $.fn.linkbutton.defaults, {
                plain: true,//为true时显示简易效果
                menu: null,//用来创建一个对应菜单的选择器
                duration: 100//用来创建一个对应菜单的选择器
            });
    })(jQuery);
    View Code

    示例代码

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Basic MenuButton - jQuery EasyUI Demo</title>
        <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
        <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
        <link rel="stylesheet" type="text/css" href="../demo.css">
        <script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
        <script src="../../plugins2/jquery.parser.js"></script>
        <script src="../../plugins2/jquery.linkbutton.js"></script>
        <script src="../../plugins2/jquery.menu.js"></script>
        <script src="../../plugins2/jquery.menubutton.js"></script>
    </head>
    <body>
        <h2>Basic MenuButton</h2>
        <div class="demo-info">
            <div class="demo-tip icon-tip"></div>
            <div>Move mouse over the button to drop down menu.</div>
        </div>
        <div style="margin:10px 0;"></div>
        <div style="padding:5px;border:1px solid #ddd">
            <a href="#" class="easyui-linkbutton" data-options="plain:true">Home</a>
            <a href="#" class="easyui-menubutton" data-options="menu:'#mm1',iconCls:'icon-edit'">Edit</a>
            <a href="#" class="easyui-menubutton" data-options="menu:'#mm2',iconCls:'icon-help'">Help</a>
            <a href="#" class="easyui-menubutton" data-options="menu:'#mm3'">About</a>
        </div>
        <div id="mm1" style="150px;">
            <div data-options="iconCls:'icon-undo'">Undo</div>
            <div data-options="iconCls:'icon-redo'">Redo</div>
            <div class="menu-sep"></div>
            <div>Cut</div>
            <div>Copy</div>
            <div>Paste</div>
            <div class="menu-sep"></div>
            <div>
                <span>Toolbar</span>
                <div style="150px;">
                    <div>Address</div>
                    <div>Link</div>
                    <div>Navigation Toolbar</div>
                    <div>Bookmark Toolbar</div>
                    <div class="menu-sep"></div>
                    <div>New Toolbar...</div>
                </div>
            </div>
            <div data-options="iconCls:'icon-remove'">Delete</div>
            <div>Select All</div>
        </div>
        <div id="mm2" style="100px;">
            <div>Help</div>
            <div>Update</div>
            <div>About</div>
        </div>
        <div id="mm3" class="menu-content" style="background:#f0f0f0;padding:10px;text-align:left">
            <img src="http://www.jeasyui.com/images/logo1.png" style="150px;height:50px">
            <p style="font-size:14px;color:#444;">Try jQuery EasyUI to build your modem, interactive, javascript applications.</p>
        </div>
    </body>
    </html>
    View Code

    插件效果

    热爱编程,热爱技术,热爱生活
  • 相关阅读:
    mongodb复制集
    MySQL需要掌握的工具
    MHA 一主两从(传统复制)搭建-脚本VIP-自动切换
    mysqldump+binlog完整恢复被删除的表/数据库
    xtrabackup全备+binlog模拟slave恢复到某一时间点-使用position
    xtrabackup全备+binlog模拟slave恢复到某一时间点-启用GTID
    数据文件物理误误删除整个库目录处理方法
    数据文件物理误删除ibd文件处理方法
    数据文件物理误删除frm文件处理方法
    javascript技巧及常用事件方法集合(全)
  • 原文地址:https://www.cnblogs.com/DemoLee/p/3500787.html
Copyright © 2011-2022 走看看