1/** 2 * WordPress JQuery Mobile Menu 3 * 4 * Inspired from JQuery Simple MobileMenu : https://github.com/Position2/jQuery-Simple-MobileMen 5 * 6 */ 7 8(function ($) { 9 var defaults = { 10 "toggleMenuId" : "toggle-menu", 11 "toggleMenuContainerId" : "toggle-menu-container", 12 "toggleMenuContainerClass" : "toggle-menu-container-class", 13 "wrapperClass" : "wp_mm_wrapper", 14 "submenuClass" : "sub-menu", 15 "bodyOverlayClass" : "body_overlay" 16 }; 17 $.fn.droSlidingMenu = function (options) { 18 if ($(this).length === 0) { return this ;} 19 var droMenu = {}, ds = $(this); 20 var init = function () { 21 droMenu.settings = $.extend({}, defaults, options); 22 createWrappers(); 23 createBackButton(); 24 createRightNavButton(); 25 }, 26 createWrappers = function () { 27 droMenu.toggleControl = $("<button/>", {"id": droMenu.settings.toggleMenuId, 28 "html": "<span></span><span></span><span></span><span></span>"}), 29 droMenu.toggleControlContainer = $("<div/>",{"id": droMenu.settings.toggleMenuContainerId, 30 "class": droMenu.settings.toggleMenuContainerClass}), 31 droMenu.wrapperControl = $("<div/>", {"class": droMenu.settings.wrapperClass}); 32 droMenu.bodyOverlay = $("<div/>", {"class": droMenu.settings.bodyOverlayClass}); 33 ds.appendTo(droMenu.wrapperControl); 34 droMenu.toggleControl.prependTo(droMenu.toggleControlContainer); 35 droMenu.toggleControlContainer.prependTo($("#masthead")); 36 droMenu.bodyOverlay.add(droMenu.wrapperControl).appendTo($(".site")); 37 }, 38 createRightNavButton = function () { 39 droMenu.wrapperControl.find("li.page_item_has_children , li.menu-item-has-children").each(function () { 40 var rightNavButton = $("<a/>", {"class": "ion-ios-arrow-forward forward"}); 41 rightNavButton.prependTo($(this)); 42 }); 43 }, 44 createBackButton = function () { 45 droMenu.wrapperControl.find("ul." + droMenu.settings.submenuClass).each(function () { 46 var dis = $(this), 47 disPar = dis.closest("li"), 48 disA = disPar.find(">a"), 49 disIconBack = $("<span/>", {"class": "ion-ios-arrow-left left"}), 50 disBack = $("<li/>", {"class": "back", 51 "html": "<a href='" + disA.attr('href') + "'>" + disA.text() + "</a>"}); 52 disIconBack.prependTo(disBack); 53 disBack.prependTo(dis); 54 }); 55 }, 56 openCurrentPage = function(){ 57 /** 58 * Syn the mobile menu with the current page 59 **/ 60 droMenu.wrapperControl.find("li.current_page_item , li.current-menu-parent, li.current-menu-ancestor") 61 .addClass("active").siblings().removeClass("active"); 62 }, 63 toggleMobileMenu = function () { 64 $("#" + droMenu.settings.toggleMenuId).toggleClass("open"); 65 $("." + droMenu.settings.bodyOverlayClass).toggleClass("enabled"); 66 /* 67 * keep the current item opened 68 * to back to the home item add : .find("li.active").removeClass("active") 69 */ 70 $("." + droMenu.settings.wrapperClass).toggleClass("active"); 71 $("body").toggleClass("wp_mm_enable"); 72 }, 73 showSubMenu = function (e) { 74 e.preventDefault(); 75 $("." + droMenu.settings.wrapperClass).scrollTop(0); 76 $(this).parent().addClass("active").siblings().removeClass("active"); 77 }, 78 goBack = function (e) { 79 e.preventDefault(); 80 $(this).closest("ul." + droMenu.settings.submenuClass).parent().removeClass("active"); 81 }; 82 83 init(); 84 openCurrentPage(); 85 droMenu.toggleControl.click(toggleMobileMenu); 86 droMenu.bodyOverlay.click(toggleMobileMenu); 87 droMenu.wrapperControl.find("li.page_item_has_children, li.menu-item-has-children > a.forward").click(showSubMenu); 88 droMenu.wrapperControl.find("li.back > span").click(goBack); 89 }; 90})(jQuery); 91 92
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.