Put a test case on http://motools.net/shell with comments about what you do and don't want to happen.
--- Ryan Florence http://ryanflorence.com On Apr 1, 2010, at 6:52 PM, keeger wrote: > Hello. > > I've created a page wrapper class to contain my javascript, partly to > avoid thrashing with global vars etc, and just organizationally i like > it. > > I'm having trouble. > > I've created the class following the standard mootools class; > > var pageClass = new Class( { > Implements: [Events], > globalControls: function() { > this.account = $(document.body).getElement("[id > $=txtAccount]"); > this.randomVariable = true; > }, > gControls: null, > initialize: function() { > this.gControls = new globalControls(); > this.gControls.account.addEvent('blur', function() { > //this == the account element at this point. > alert(this.value); //works > alert(this.gControls.randomVariable); //fails but > is desired. > }); > }); > > Now, I've tried putting "this" after the function() {} in addEvent, to > re-direct this to the object: like so: > > ...//SNIPPED > > initialize: function() { > this.gControls = new globalControls(); > this.gControls.account.addEvent('blur', function() { > //this == the account element at this point. > alert(this.value); //works > alert(this.gControls.randomVariable); //fails > alert(this.gControls.account.value); //would be > acceptable if this were re-set to be the pageClass instance. > }, this); //still fails. this never points to anything but > the account input > > globalControls is an inner class to hold references to DOM elements. > I do this, since I'm using .Net, and I have to search by [id > $=elementName], and I don't want to slow things down by doing this > everytime I use a control. > > Interestingly enough, the very first time through (initialize), > this.gControls is a recognized variable. It's on the subsequent calls > that it is not (when an actual blur happens). > > So my question is this: Is there a way inside a class to make an > event function aware of the class? If so, how? I am trying to avoid > having to use actual global variables. The pages involved use a div > that's populated via ajax and another page, and while I could code > globals that are intersect free per se, I would rather a neater, more > encapsulated approach. > > Thanks for any help > > > -- > To unsubscribe, reply using "remove me" as the subject.
