diff --git a/README.md b/README.md index 59ae184..27e4216 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,8 @@ Documentation - mouseoverDelay - (number: defaults to 0) The time (delay) before the onOpen event get fired - listSelector - (string: defaults to `ul`) The list tagname - itemSelector - (string: defaults to `li`) The items tagname - +- openEvent - (string: defaults to 'mouseenter') The event name when the menu should open +- closeEvent - (string: defaults to 'mouseleave') The event name when the menu should close #### Events #### - open - (function) The function which opens a part of the menu diff --git a/Source/MooDropMenu.js b/Source/MooDropMenu.js index b9cd8cc..ac0fa18 100644 --- a/Source/MooDropMenu.js +++ b/Source/MooDropMenu.js @@ -34,7 +34,9 @@ var MooDropMenu = new Class({ mouseoutDelay: 200, mouseoverDelay: 0, listSelector: 'ul', - itemSelector: 'li' + itemSelector: 'li', + openEvent: 'mouseenter', + closeEvent: 'mouseleave' }, initialize: function(menu, options, level){ @@ -50,27 +52,22 @@ var MooDropMenu = new Class({ var parent = el.getParent(options.itemSelector), timer; - parent.addEvents({ + parent.addEvent(options.openEvent, function(){ + parent.store('DropDownOpen', true); - 'mouseenter': function(){ - parent.store('DropDownOpen', true); + clearTimeout(timer); + if (options.mouseoverDelay) timer = this.fireEvent.delay(options.mouseoverDelay, this, ['open', el]); + else this.fireEvent('open', el); - clearTimeout(timer); - if (options.mouseoverDelay) timer = this.fireEvent.delay(options.mouseoverDelay, this, ['open', el]); - else this.fireEvent('open', el); + }.bind(this)).addEvent(options.closeEvent, function(){ + parent.store('DropDownOpen', false); - }.bind(this), + clearTimeout(timer); + timer = (function(){ + if (!parent.retrieve('DropDownOpen')) this.fireEvent('close', el); + }).delay(options.mouseoutDelay, this); - 'mouseleave': function(){ - parent.store('DropDownOpen', false); - - clearTimeout(timer); - timer = (function(){ - if (!parent.retrieve('DropDownOpen')) this.fireEvent('close', el); - }).delay(options.mouseoutDelay, this); - - }.bind(this) - }); + }.bind(this)); }, this); },