1/** 2 * MuffinMenu 3 * 4 * Horizontal Multilevel Menu with WP MegaMenu Support 5 * 6 * 3.0 | Muffin Group 7 */ 8 9;(function($){ 10 "use strict"; 11 12 $.fn.mfnMenu = function( options ){ 13 14 var menu = $(this); 15 16 var defaults = { 17 addLast : false, 18 arrows : false, 19 delay : 100, 20 hoverClass : 'hover', 21 mobileInit : 768 22 }; 23 options = $.extend( defaults, options ); 24 25 26 var init = function(){ 27 28 // add '.submenu' class 29 $( 'li:has(ul)', menu ).addClass( 'submenu' ); 30 31 // append mobile toggle button 32 $( 'li:has(ul)', menu ).append( '<span class="menu-toggle"></span>' ); 33 34 // add '.mfn-megamenu-parent' class 35 menu.children( 'li:has( ul.mfn-megamenu )' ).addClass( 'mfn-megamenu-parent' ); 36 37 // add '.last-item' class 38 $( '.submenu ul li:last-child', menu ).addClass( 'last-item' ); 39 40 // add '.last' class 41 if( options.addLast ) { 42 $( '> li:last-child', menu ).addClass( 'last' ) 43 .prev().addClass( 'last' ); 44 } 45 46 // appand submenu arrows 47 if( options.arrows ) { 48 $( 'li ul li:has(ul) > a', menu ).append( '<i class="menu-arrow icon-right-open"></i>' ); 49 } 50 51 }; 52 53 54 var doMenu = function(){ 55 56// console.log( [$(window).width(), options.mobileInit ]); 57 58 if( $(window).width() >= options.mobileInit ){ 59 60 // desktop -------------------------------- 61 62 $( '> li, ul:not(.mfn-megamenu) li', menu ).hover(function() { 63 64 $(this).stop(true,true).addClass( options.hoverClass ); 65 66 $(this).children( 'ul' ).stop(true,true).fadeIn( options.delay ); 67 68 69 }, function(){ 70 71 $(this).stop(true,true).removeClass( options.hoverClass ); 72 73 $(this).children( 'ul' ).stop(true,true).fadeOut( options.delay ); 74 75 }); 76 77 } else { 78 79 // mobile --------------------------------- 80 81 $( 'li', menu ).unbind('hover'); 82 83 $( 'li > .menu-toggle', menu ).off('click').on('click', function(){ 84 85 var el = $(this).closest('li'); 86 87 if( el.hasClass( options.hoverClass ) ){ 88 89 el.removeClass( options.hoverClass ) 90 .children('ul').stop(true,true).fadeOut( options.delay ); 91 92 } else { 93 94 el.addClass( options.hoverClass ) 95 .children('ul').stop(true,true).fadeIn( options.delay ); 96 97 } 98 99 }); 100 101 } 102 103 }; 104 105 106 $(window).bind( 'resize', doMenu ); 107 108 var __constructor = function(){ 109 init(); 110 doMenu(); 111 }; 112 113 __constructor(); 114 115 } 116 117})(jQuery);
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.