Permalink
Jump to Line
mobilemenu/jquery.mobilemenu.js
20cfbc8
Users who have contributed to this file
/** | |
* jQuery Mobile Menu | |
* Turn unordered list menu into dropdown select menu | |
* version 1.1(27-JULY-2013) | |
* | |
* Built on top of the jQuery library | |
* https://jquery.com | |
* | |
* Documentation | |
* https://github.com/mambows/mobilemenu | |
*/ | |
(function($){ | |
$.fn.mobileMenu = function(options) { | |
var defaults = { | |
defaultText: 'Navigate to...', | |
className: 'select-menu', | |
subMenuClass: 'sub-menu', | |
subMenuDash: '–' | |
}, | |
settings = $.extend( defaults, options ), | |
el = $(this); | |
this.each(function(){ | |
var $el = $(this), | |
$select_menu; | |
// ad class to submenu list | |
$el.find('ul').addClass(settings.subMenuClass); | |
// Create base menu | |
var $select_menu = $('<select />',{ | |
'class' : settings.className + ' ' + el.get(0).className | |
}).insertAfter( $el ); | |
// Create default option | |
$('<option />', { | |
"value" : '#', | |
"text" : settings.defaultText | |
}).appendTo( $select_menu ); | |
// Create select option from menu | |
$el.find('a').each(function(){ | |
var $this = $(this), | |
optText = ' ' + $this.text(), | |
optSub = $this.parents( '.' + settings.subMenuClass ), | |
len = optSub.length, | |
dash; | |
// if menu has sub menu | |
if( $this.parents('ul').hasClass( settings.subMenuClass ) ) { | |
dash = Array( len+1 ).join( settings.subMenuDash ); | |
optText = dash + optText; | |
} | |
// Now build menu and append it | |
$('<option />', { | |
"value" : this.href, | |
"html" : optText, | |
"selected" : (this.href == window.location.href) | |
}).appendTo( $select_menu ); | |
}); // End el.find('a').each | |
// Change event on select element | |
$select_menu.change(function(){ | |
var locations = $(this).val(); | |
if( locations !== '#' ) { | |
window.location.href = $(this).val(); | |
}; | |
}); | |
}); // End this.each | |
return this; | |
}; | |
})(jQuery); |