Wow, its amazing what seeing another example of the same thing can do; Right now Im using a different approach - Im using a Delegate class to hold, watch, pause, and broadcast events, but with an awckward registration syntax.
I like your system a lot better...thank you for sharing this. Jacob On Apr 1, 3:47 am, nutron <[email protected]> wrote: > Event delegation is coming in the next version of MooTools. If you use your > method below it should still work in the next version of MooTools, but the > official mechanism is quite different... > > On Wed, Apr 1, 2009 at 12:24 AM, eskimoblood (via Nabble) < > [email protected]<ml-user%[email protected]> > > > > > wrote: > > > This is the way I've done it for all events, but you have to use a > > classname as an idendifier: > > > Element.implement({ > > /** > > * @param {String} eventTyp > > * @param {String} className > > * @param {Function} func > > */ > > registerEvent: function(eventTyp, className, func){ > > var savedEvents = this.retrieve('savedEvents') || {}; > > if (!savedEvents[eventTyp]) { > > if (eventTyp == 'blur') { > > if (Browser.Engine.trident) { > > this.onfocusout = > > this.handleEvents.bind(this); > > } else { > > this.addEventListener('blur', > > function(e){this.handleEvents > > (e)}.bind(this), true ); > > } > > } else { > > this.addEvent(eventTyp, > > this.handleEvents.bindWithEvent(this)); > > } > > savedEvents[eventTyp]={}; > > } > > savedEvents[eventTyp][className] = func; > > this.store('savedEvents', savedEvents); > > return this; > > }, > > handleEvents: function(event){ > > var storedEvents = > > this.retrieve('savedEvents')[(!event.type.match(/ > > DOMMouseScroll|focusout/)) ? event.type : event.type == > > 'DOMMouseScroll' ? 'mousewheel' : 'blur']; > > if (storedEvents) { > > var target = $(event.target), > > eventIsFired = false; > > while (!eventIsFired && target) { > > target.className.split(' > > ').some(function(className){ > > if (storedEvents[className]) { > > event.target = target; > > > storedEvents[className].run(event); > > eventIsFired = true; > > return true; > > } > > }, this); > > target = target.getParent(); > > } > > } > > } > > }); > > > On 1 Apr., 05:50, Jacob > > <jacob.far...@...<http://n2.nabble.com/user/SendEmail.jtp?type=node&node=2567584&i=0>> > > wrote: > > > I think I found my answer - I can simply use var blah = new Event > > > (rawEvent). > > > > On Mar 31, 11:36 pm, Jacob > > > <jacob.far...@...<http://n2.nabble.com/user/SendEmail.jtp?type=node&node=2567584&i=1>> > > wrote: > > > > > So im trying to learn about effective event delegation, and I need to > > > > know when certain elements lose and gain focus. > > > > > PPK wrote a great article on this, (http://www.quirksmode.org/blog/ > > > > archives/2008/04/delegating_the.html) and I was wondering about his > > > > solution: > > > > > How can I properly use Internet Explorerer's onfocusin/onfocusout > > > > events and addEventListener so that this concept works smoothly cross- > > > > browser, just like the existing Mootools addEvent system? Do I need to > > > > do some major extending to the Mootools Event object? > > > > > Thanks > > > > Jacob > > > ------------------------------ > > View message @ > >http://n2.nabble.com/-Moo--Event-delegation-for-focus-and-blur-tp2566... > > To start a new topic under MooTools Users, email > > [email protected]<ml-node%[email protected]> > > To unsubscribe from MooTools Users, click here< (link removed) >. > > ----- > The MooTools Tutorial: http://www.mootorial.comwww.mootorial.com > Clientcide: http://www.clientcide.comwww.clientcide.com > -- > View this message in > context:http://n2.nabble.com/-Moo--Event-delegation-for-focus-and-blur-tp2566... > Sent from the MooTools Users mailing list archive at Nabble.com.
