/* * jQuery dropdown: A simple dropdown plugin * * Inspired by Bootstrap: http://twitter.github.com/bootstrap/javascript.html#dropdowns * * Copyright 2011 Cory LaViska for A Beautiful Site, LLC. (http://abeautifulsite.net/) * * Dual licensed under the MIT or GPL Version 2 licenses * */ if(jQuery) (function($) { $.extend($.fn, { dropdown: function(method, data) { switch( method ) { case 'hide': hideDropdowns(); return $(this); case 'attach': return $(this).attr('data-dropdown', data); case 'detach': hideDropdowns(); return $(this).removeAttr('data-dropdown'); case 'disable': return $(this).addClass('dropdown-disabled'); case 'enable': hideDropdowns(); return $(this).removeClass('dropdown-disabled'); } } }); function showMenu(event) { var trigger = $(this), dropdown = $( $(this).attr('data-dropdown') ), isOpen = trigger.hasClass('dropdown-open'); event.preventDefault(); event.stopPropagation(); hideDropdowns(); if( isOpen || trigger.hasClass('dropdown-disabled') ) return; dropdown.css({ left: trigger.offset().left - 4, top: trigger.offset().top + trigger.outerHeight() }).show(); trigger.addClass('dropdown-open'); } function hideDropdowns(event) { var targetGroup = event ? $(event.target).parents().andSelf() : null; if( targetGroup && targetGroup.is('.action-dropdown') && !targetGroup.is('a') ) return; $('body') .find('.action-dropdown').hide().end() .find('[data-dropdown]').removeClass('dropdown-open'); } $(function () { $('body').on('click.dropdown', '[data-dropdown]', showMenu); $('html').on('click.dropdown', hideDropdowns); if( !$.browser.msie || ($.browser.msie && $.browser.version >= 9) ) { $(window).on('resize.dropdown', hideDropdowns); } }); })(jQuery);