• jquery 菜单展开与收缩参考脚本


    /*
     * metismenu - v1.1.3
     * Easy menu jQuery plugin for Twitter Bootstrap 3
     * https://github.com/onokumus/metisMenu
     *
     * Made by Osman Nuri Okumus
     * Under MIT License
     */
    ;(function($, window, document, undefined) {
    
        var pluginName = "metisMenu",
            defaults = {
                toggle: true,
                doubleTapToGo: false
            };
    
        function Plugin(element, options) {
            this.element = $(element);
            this.settings = $.extend({}, defaults, options);
            this._defaults = defaults;
            this._name = pluginName;
            this.init();
        }
    
        Plugin.prototype = {
            init: function() {
    
                var $this = this.element,
                    $toggle = this.settings.toggle,
                    obj = this;
    
                if (this.isIE() <= 9) {
                    $this.find("li.active").has("ul").children("ul").collapse("show");
                    $this.find("li").not(".active").has("ul").children("ul").collapse("hide");
                } else {
                    $this.find("li.active").has("ul").children("ul").addClass("collapse in");
                    $this.find("li").not(".active").has("ul").children("ul").addClass("collapse");
                }
    
                //add the "doubleTapToGo" class to active items if needed
                if (obj.settings.doubleTapToGo) {
                    $this.find("li.active").has("ul").children("a").addClass("doubleTapToGo");
                }
    
                $this.find("li").has("ul").children("a").on("click" + "." + pluginName, function(e) {
                    e.preventDefault();
    
                    //Do we need to enable the double tap
                    if (obj.settings.doubleTapToGo) {
    
                        //if we hit a second time on the link and the href is valid, navigate to that url
                        if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#" && $(this).attr("href") !== "") {
                            e.stopPropagation();
                            document.location = $(this).attr("href");
                            return;
                        }
                    }
    
                    $(this).parent("li").toggleClass("active").children("ul").collapse("toggle");
    
                    if ($toggle) {
                        $(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide");
                    }
    
                });
            },
    
            isIE: function() { //https://gist.github.com/padolsey/527683
                var undef,
                    v = 3,
                    div = document.createElement("div"),
                    all = div.getElementsByTagName("i");
    
                while (
                    div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->",
                    all[0]
                ) {
                    return v > 4 ? v : undef;
                }
            },
    
            //Enable the link on the second click.
            doubleTapToGo: function(elem) {
                var $this = this.element;
    
                //if the class "doubleTapToGo" exists, remove it and return
                if (elem.hasClass("doubleTapToGo")) {
                    elem.removeClass("doubleTapToGo");
                    return true;
                }
    
                //does not exists, add a new class and return false
                if (elem.parent().children("ul").length) {
                     //first remove all other class
                    $this.find(".doubleTapToGo").removeClass("doubleTapToGo");
                    //add the class on the current element
                    elem.addClass("doubleTapToGo");
                    return false;
                }
            },
    
            remove: function() {
                this.element.off("." + pluginName);
                this.element.removeData(pluginName);
            }
    
        };
    
        $.fn[pluginName] = function(options) {
            this.each(function () {
                var el = $(this);
                if (el.data(pluginName)) {
                    el.data(pluginName).remove();
                }
                el.data(pluginName, new Plugin(this, options));
            });
            return this;
        };
    
    })(jQuery, window, document);
  • 相关阅读:
    Silverlight 调用GP服务第一篇之发布GP服务(Geoprocessing Service)
    SQLServer中char、varchar、nchar、nvarchar的区别:
    word中带圈符号如何手动输入
    js中循环for
    正则表达式总结
    SQL Server 2008 数据库 不允许保存修改。
    多线程三种锁Monitor,lock,Mutex
    Lambda和Linq的用法
    RowDeleting和RowDeleted区别
    ASP.NET中aspx.cs页面代码中的换行方法
  • 原文地址:https://www.cnblogs.com/hellowzl/p/9200707.html
Copyright © 2020-2023  润新知