The page loads, listen for a click on the ''emailus'' link and pass the two variables col2 and col3 to the function getContentAlt. Here is the code Event.observe(window, ''load'', function() { var col2 = ''/includes/content/contact-col-2.php''; var col3 = ''/includes/content/contact-col-3.php''; Event.observe(''emailus'', ''click'', getContentAlt(col2, col3)); }); Now here is getContentAlt. You can see that the first the function checks for is if the link has a class name of ''current''. So I am unclear of how I pass ''this'' to the function so it knows what link the user clicked on? function getContentAlt(col2, col3) { if ($(this).hasClassName(''current'')) { return false; } else { if($(''slideshow'')){ $(''slideshow'').remove(); } new Effect.Opacity(''footer'', { duration: .5, to: 0 }); new Effect.Opacity(''content'', { duration: .5, to: 0, afterFinish: function() { new Ajax.Updater(''content'', col3, { method:''get'', evalScripts: true, onComplete:function(){ getColHeight(); new Effect.Opacity(''content'', { duration: .5, to: 1 }); if($(''contact'')){ loadAction(); } } }); }}); new Effect.Opacity(''container'', { duration: .5, to: 0, afterFinish: function() { new Ajax.Updater(''container'', col2, { method:''get'', onComplete:function(){ getColHeight(); new Effect.Opacity(''container'', { duration: .5, to: 1 }); new Effect.Opacity(''footer'', { duration: .5, to: 1 }); } }); }}); removeClassCurrent(); $(this).toggleClassName(''current''); return false; }; } --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
> Event.observe(window, ''load'', function() {It might be better to listen to ''dom:loaded'' event on a document (since it fires as soon as DOM is ready)> Event.observe(''emailus'', ''click'', getContentAlt(col2, col3));Event.observe needs a function reference as a third argument. You probably meant to do: Event.observe(''emailus'', ''click'', function(){ getContentAlt(col2, col3) }); // or $(''emailus'').observe(''click'', function() { getContentAlt(col2, col3) });> function getContentAlt(col2, col3) { > > if ($(this).hasClassName(''current'')) { > > return false; > > }return false; wouldn''t work in Event.observe. You need to use Event.stop(event). Best, kangax --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
To add to kangax''s reply, it is possible to pass in additional parameters to the bindAsEventListener call and they will be passed down to your observing function via additional parameters. Keep in mind though that the first argument will always be the fired event object. Here is a small example with a few extra ideas to play with: var Sample = { initialize: function(){ $(''some_id'').observe(''click'', this.clicked.bindAsEventListener(this, ''Hello'')); }, clicked: function(event, something){ // at this point, ''this'' will refer to the instance of the Sample object event.stop(); // if you want to alert(something); // will be "Hello" this.somethingElse(); }, somethingElse: function(){ alert(''Hey there''); } }; -justin --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Maybe I am confused as to where to put Event.stop(event) because the link still gets followed. On Apr 17, 9:09 pm, kangax <kan...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Event.observe(window, ''load'', function() { > > It might be better to listen to ''dom:loaded'' event on a document > (since it fires as soon as DOM is ready) > > > Event.observe(''emailus'', ''click'', getContentAlt(col2, col3)); > > Event.observe needs a function reference as a third argument. You > probably meant to do: > > Event.observe(''emailus'', ''click'', function(){ getContentAlt(col2, > col3) }); > // or > $(''emailus'').observe(''click'', function() { getContentAlt(col2, > col3) }); > > > function getContentAlt(col2, col3) { > > > if ($(this).hasClassName(''current'')) { > > > return false; > > > } > > return false; wouldn''t work in Event.observe. You need to use > Event.stop(event). > > Best, > kangax--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for the added reply Justin, although I am just confused now. I think I need some newbie hand holding. Maybe I should explain the ultimate goal. The function getContentAlt set up to be reusable. I pass variables col2 and col3 depending on which link is clicked. I would set up multiple Event.observe''s for this.That function needs to know what ''this'' is because the first if statement tests to see if the class name is ''current'' or not. if it is, it does not follow through with the function and does not follow the link. Right now the function does not know what ''this'' is I presume, because I get this error.... $(this).hasClassName is not a function getContentAlt("/includes/content/contact-col-2.php", "/includes/ content/contact-col-3.php")functions.js (line 369) (no name)() wrapper(click clientX=0, clientY=0) if ($(this).hasClassName(''current'')) { On Apr 17, 9:28 pm, anathema <spamfreeunive...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Maybe I am confused as to where to put Event.stop(event) because the > link still gets followed. > > On Apr 17, 9:09 pm, kangax <kan...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Event.observe(window, ''load'', function() { > > > It might be better to listen to ''dom:loaded'' event on a document > > (since it fires as soon as DOM is ready) > > > > Event.observe(''emailus'', ''click'', getContentAlt(col2, col3)); > > > Event.observe needs a function reference as a third argument. You > > probably meant to do: > > > Event.observe(''emailus'', ''click'', function(){ getContentAlt(col2, > > col3) }); > > // or > > $(''emailus'').observe(''click'', function() { getContentAlt(col2, > > col3) }); > > > > function getContentAlt(col2, col3) { > > > > if ($(this).hasClassName(''current'')) { > > > > return false; > > > > } > > > return false; wouldn''t work in Event.observe. You need to use > > Event.stop(event). > > > Best, > > kangax--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
On Fri, Apr 18, 2008 at 12:04 AM, anathema <spamfreeuniverse-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Thanks for the added reply Justin, although I am just confused now.Sorry about that.> $(this).hasClassName is not a functionUnless you''re talking about instances of objects, which you clearly are not talking about, ''this'' is nothing you need to dabble with, nor is it used like you are trying to do in this case. When you say $(this), what are you expecting that object to be? Why are you even using it? -justin --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
I am expecting it to be the link clicked. The function tests to see what the class name of the link is. I actually have all of this working with behaviour.js (not sure if you are familiar). I was just trying to remove the dependency for that script and do it all with event listeners instead. On Apr 17, 10:43 pm, "Justin Perkins" <justinperk...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Fri, Apr 18, 2008 at 12:04 AM, anathema <spamfreeunive...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thanks for the added reply Justin, although I am just confused now. > > Sorry about that. > > > $(this).hasClassName is not a function > > Unless you''re talking about instances of objects, which you clearly > are not talking about, ''this'' is nothing you need to dabble with, nor > is it used like you are trying to do in this case. > > When you say $(this), what are you expecting that object to be? Why > are you even using it? > > -justin--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Hi anathema, sorry if my post is too late :-) , i hope you have already found the answer. Here is the source code (except prototype.js of course) to get your "this" <html> <head> <script type="text/javascript" src="prototype/prototype-1.6.0.2.js"></script> <script type="text/javascript"> function getContentAlt(event, col2, col3){ alert(event); // your event alert(Event.element(event)); // your "this", the element clicked alert(Event.element(event).id); // element''s id makes sure you get the right element Event.stop(event); // stop event // do what you want to do } Event.observe(document, ''dom:loaded'', function(){ var col2 = ''/includes/content/contact-col-2.php''; var col3 = ''/includes/content/contact-col-3.php''; Event.observe(''link1'', ''click'', getContentAlt.bindAsEventListener(false, col2, col3)); Event.observe(''link2'', ''click'', getContentAlt.bindAsEventListener(false, col2, col3)); Event.observe(''link3'', ''click'', getContentAlt.bindAsEventListener(false, col2, col3)); Event.observe(''link4'', ''click'', getContentAlt.bindAsEventListener(false, col2, col3)); }); </script> </head> <body> <a id="link1" href="somefile1.html">Link 1</a><br /> <a id="link2" href="somefile2.html">Link 2</a> <div id="link3">Link 3</div> <span id="link4">Link 4</span> </body> </html> anathema wrote:> Thanks for the added reply Justin, although I am just confused now. I > think I need some newbie hand holding. > > > Maybe I should explain the ultimate goal. The function getContentAlt > set up to be reusable. I pass variables col2 and col3 depending on > which link is clicked. I would set up multiple Event.observe''s for > this.That function needs to know what ''this'' is because the first if > statement tests to see if the class name is ''current'' or not. if it > is, it does not follow through with the function and does not follow > the link. > > Right now the function does not know what ''this'' is I presume, because > I get this error.... > > > $(this).hasClassName is not a function > getContentAlt("/includes/content/contact-col-2.php", "/includes/ > content/contact-col-3.php")functions.js (line 369) > (no name)() > wrapper(click clientX=0, clientY=0) > if ($(this).hasClassName(''current'')) { > > > On Apr 17, 9:28 pm, anathema <spamfreeunive...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > >> Maybe I am confused as to where to put Event.stop(event) because the >> link still gets followed. >> >> On Apr 17, 9:09 pm, kangax <kan...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >> >>>> Event.observe(window, ''load'', function() { >>>> >>> It might be better to listen to ''dom:loaded'' event on a document >>> (since it fires as soon as DOM is ready) >>> >>>> Event.observe(''emailus'', ''click'', getContentAlt(col2, col3)); >>>> >>> Event.observe needs a function reference as a third argument. You >>> probably meant to do: >>> >>> Event.observe(''emailus'', ''click'', function(){ getContentAlt(col2, >>> col3) }); >>> // or >>> $(''emailus'').observe(''click'', function() { getContentAlt(col2, >>> col3) }); >>> >>>> function getContentAlt(col2, col3) { >>>> >>>> if ($(this).hasClassName(''current'')) { >>>> >>>> return false; >>>> >>>> } >>>> >>> return false; wouldn''t work in Event.observe. You need to use >>> Event.stop(event). >>> >>> Best, >>> kangax >>>--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---