I read about binding several times, but I didn't really understand ;) It's some sort of working now... I'll read this chapter again
On 2 Mai, 19:18, Ken Snyder <[EMAIL PROTECTED]> wrote: > Andreas Bachmann wrote: > > Hi > > > I'm new to prototype and have some problems creating a class... > > really!! > > I'm using script.aculo.us too, but it's not a problem... rightnow ;) > > > My code: > > > var ImageButton = Class.create({ > > initialize: function(e) { > > this.e = e; > > this.e.observe('mouseover', this.onMousOver); > > this.e.observe('mouseout', this.onMousOut); > > }, > > > onMousOver: function() { > > this.fadeIn(); > > }, > > > onMouseOut: function() { > > this.fadeOut(); > > }, > > > fadeIn: function() { > > new Effect.Fade(e, { duration: 1 }); > > }, > > > fadeOut: function() { > > new Effect.Appear(e, { duration: 1, from: 1.0, to: 1.0 }); > > } > > }); > > > document.observe('dom:loaded' , function() { > > var previous = new ImageButton($('previous')); > > var next = new ImageButton($('next')); > > }); > > > --> Firebug result: this.fadeIn is not a function > > > The same code but shorter: > > > var ImageButton = Class.create({ > > initialize: function(e) { > > this.e = e; > > this.e.observe('mouseover', this.fadeIn); > > this.e.observe('mouseout', this.fadeOut); > > }, > > > fadeIn: function() { > > new Effect.Fade(e, { duration: 1 }); > > }, > > > fadeOut: function() { > > new Effect.Appear(e, { duration: 1, from: 1.0, to: 1.0 }); > > } > > }); > > > document.observe('dom:loaded' , function() { > > var previous = new ImageButton($('previous')); > > var next = new ImageButton($('next')); > > }); > > > --> Firebug result: e is not defined > > > Any advice to get to work? > > On the first bit, you need to bind the functions to "this" since the > body of those functions reference "this". so: > > initialize: function(e) { > this.e = e; > this.e.observe('mouseover', this.onMousOver.bind(this)); > this.e.observe('mouseout', this.onMousOut.bind(this)); > }, > > On the second bit, you forgot to put "e" as a parameter to fadeIn() and > fadeOut(). > > - Ken Snyder --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---