Ciao, qualcuno conosce una classe per creare un popupmenu con prototype?
Mi sono cimentato nello scriverne una (statica) con solo la possibilità di un sottomenu, ma so che in giro sicuramente qualcun'altro avrà fatto di meglio (molto di meglio), anche perchè non riesco ad evitare che l'evento di chiusra non sia associato ANCHE al contenuto anziché al contenitore. Cioè io associo al mouseout dell'UL si chiuda il sottomenu, ma per qualche motivo in tutti i browser anche i LI hanno lo stesso evento, mandando all'aria la temporaneità.
Comunque allego il codice:
Codice PHP:Submenu={ trigger:function(e){ el=e.element(); el.submenu=el.submenu||el.next(); Event.stopObserving(el,'mouseover',Submenu.trigger); new Effect.BlindDown(el.submenu,{duration:.3,afterFinish:function(){ el.submenu.observe('mouseout',Submenu.hide); el.submenu.observe('mouseover',Submenu.cancel_hide); }}); }, hide:function(e){ Submenu.reset(e.element()); }, cancel_hide:function(e){ el=e.element(); if(el.timeout){ clearInterval(el.timeout); } }, reset:function(el){ if(/^<ul/.test(el.inspect())) { $('status').update(el.inspect()); el.timeout=setTimeout(function(){ Event.stopObserving(this,'mouseover',Submenu.hide); new Effect.BlindUp(this,{duration:.3,afterFinish:function(){ this.previous().observe('mouseover',Submenu.trigger); }.bind(this)}); }.bind(el),500); }else{ if(Prototype.Browser.IE){ Submenu.reset(el.up()); } } } }; Event.observe(window,'load',function(){ $$('.submenu a').each(function(el){ $$('.submenutrigger').invoke('observe','mouseover',Submenu.trigger); });

Rispondi quotando