zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/hellowzl/p/9200707.html
Copyright © 2011-2022 走看看