|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- * Dropit v1.1.0
- * http://dev7studios.com/dropit
- *
- * Copyright 2012, Dev7studios
- * Free to use and abuse under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- */
-
- ;(function($) {
-
- $.fn.dropit = function(method) {
-
- var methods = {
-
- init : function(options) {
- this.dropit.settings = $.extend({}, this.dropit.defaults, options);
- return this.each(function() {
- var $el = $(this),
- el = this,
- settings = $.fn.dropit.settings;
-
- // Hide initial submenus
- $el.addClass('dropit')
- .find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')
- .find(settings.submenuEl).addClass('dropit-submenu').hide();
-
- // Open on click
- $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){
- // Close click menu's if clicked again
- if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){
- settings.beforeHide.call(this);
- $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();
- settings.afterHide.call(this);
- return false;
- }
-
- // Hide open menus
- settings.beforeHide.call(this);
- $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
- settings.afterHide.call(this);
-
- // Open this menu
- settings.beforeShow.call(this);
- $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();
- settings.afterShow.call(this);
-
- return false;
- });
-
- // Close if outside click
- $(document).on('click', function(){
- settings.beforeHide.call(this);
- $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
- settings.afterHide.call(this);
- });
-
- // If hover
- if(settings.action == 'mouseenter'){
- $el.on('mouseleave', '.dropit-open', function(){
- settings.beforeHide.call(this);
- $(this).removeClass('dropit-open').find(settings.submenuEl).hide();
- settings.afterHide.call(this);
- });
- }
-
- settings.afterLoad.call(this);
- });
- }
-
- };
-
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error( 'Method "' + method + '" does not exist in dropit plugin!');
- }
-
- };
-
- $.fn.dropit.defaults = {
- action: 'mouseenter', // The open action for the trigger
- submenuEl: 'ul', // The submenu element
- triggerEl: 'a', // The trigger element
- triggerParentEl: 'li', // The trigger parent element
- afterLoad: function(){}, // Triggers when plugin has loaded
- beforeShow: function(){}, // Triggers before submenu is shown
- afterShow: function(){}, // Triggers after submenu is shown
- beforeHide: function(){}, // Triggers before submenu is hidden
- afterHide: function(){} // Triggers before submenu is hidden
- };
-
- $.fn.dropit.settings = {};
-
- })(jQuery);
|