You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
/*
 | 
						|
 * 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); |