Template:UFMG Brazil/jquery.mobilemenu.js

From 2014.igem.org

Revision as of 22:12, 17 October 2014 by Daniela fc (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

/**

* jQuery Mobile Menu 
* Turn unordered list menu into dropdown select menu
* version 1.1(27-JULY-2013)
* 
* Built on top of the jQuery library
*   http://jquery.com
* 
* Documentation
*   http://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();
     };
   });
   $('.select-menu').show();
 }); // End this.each
 return this;

}; })(jQuery); $(document).ready(function(){ $('.sf-menu').mobileMenu(); });