[Proto-Scripty] hide/show div id not working - HELP!

2009-08-31 Thread Nelson Hernandez

I have a very simple script that is intended to show an employees
biography on click, and hide all other biography's (since they occupy
the same space).  I have two issues I can't resolve, and for the life
of me can't figure out why.  I'm using Ruby on Rails and I have
included the default javascrip which includes Prototype.  I'm testing
in FireFox.

Here's the code with comments for reference, exact problems detailed
below:

script type=text/javascript
$(document).ready(function(){

 $(.bio_button).click(function(event) {   //when a user clicks on
div with class bio_button, do:
$(.bio).hide();//hide all divs that have a
class of bio
var element = Event.element(event);//get the div id for the
element clicked
var id = element.id.substring(0,element.id.length-1);   
//remove the
last letter of that div id, which

 //
corresponds to the div which contains the

 //
biography text

//alert(id);  //used to make sure the substring 
was
working, it is.
$(id).show(); //this doesn't work for some reason HELP,
please :(
 });
});
/script
...
div class=bio_button id=timBclick to show Tims bio/div
div class=bio_button id=bethBclick to show Beths bio/div
...
div class=bio id=tim style=display:none;tim's awesome
biography/div
div class=bio id=beth style=display:none;beth's awesome
biography/div

PROBLEM(s) (using a click on tim as example):
1) The above does indeed hide all bio's, and will output an alert of
tim if I click on tim.  However, it won't change the display style
to show.

2) In the javascript, if I replace $(id).show(); with $(tim).show();
it still doesn't workunless I use tim as one of the class
definitions in the html instead of a div id.  If I specify tim as a
class, and use tim explicitly in the javascript, it works perfectly.

Sorry if this is the wrong forum, i'm losing my mind over what seems
should be very simple.  Thanks to anyone that can help.

-Nelson

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~--~~~~--~~--~--~---



[Proto-Scripty] Re: hide/show div id not working - HELP!

2009-09-05 Thread Nelson Hernandez

Thanks for the fast response and information.  I didn't understand how
prototype, jquery, mootools, and dojo were extending javascript
differently, I get it a little better now.  Since I have both jquery
and prototype used in my project, i was able to accomplish my task
with the following code so that they play nicely together:

script type=text/javascript
$(document).ready(function(){
$j= jQuery.noConflict();
$j('.bio_button').click(function(event) {
$j('.bio').hide();
var element = Event.element(event);
var id = element.id.substring(0,element.id.length-1);
var idt = document.getElementById(id)
$j(idt).show();

 });
});
/script

Thanks for your help !  It would have taken me forever to figure it
out without it.  It would be cool if there were a language translator
between these javascript extensions.
-Nelson

On Aug 31, 3:22 am, T.J. Crowder t...@crowdersoftware.com wrote:
 Hi,

  $(document).ready(function(){

   $(.bio_button).click(function(event) {   //when a user clicks on

 Both of those look like jQuery, not Prototype.  Prototype's equivalent
 of the jQuery ready function is the dom:loaded event[1]:

     document.observe('dom:loaded', yourCallbackGoesHere);

 Similarly, $()[2] looks up elements by ID, it does not search for them
 by selector.  $$()[3] does that.

 It may be worth your taking a step back and reading the Prototype API
 [4] through from beginning to end.  It takes about an hour, and will
 save you at least that much time across the life of your project
 (heck, probably even in the coming week).

 [1]http://prototypejs.org/api/document/observe
 [2]http://prototypejs.org/api/utility/dollar
 [3]http://prototypejs.org/api/utility/dollar-dollar
 [4]http://prototypejs.org/api

 HTH,
 --
 T.J. Crowder
 tj / crowder software / comwww.crowdersoftware.com

 On Aug 31, 1:48 am, Nelson Hernandez nels...@gmail.com wrote:

  I have a very simple script that is intended to show an employees
  biography on click, and hide all other biography's (since they occupy
  the same space).  I have two issues I can't resolve, and for the life
  of me can't figure out why.  I'm using Ruby on Rails and I have
  included the default javascrip which includes Prototype.  I'm testing
  in FireFox.

  Here's the code with comments for reference, exact problems detailed
  below:

  script type=text/javascript
  $(document).ready(function(){

   $(.bio_button).click(function(event) {   //when a user clicks on
  div with class bio_button, do:
                  $(.bio).hide();                    //hide all divs that 
  have a
  class of bio
                  var element = Event.element(event);    //get the div id for 
  the
  element clicked
                  var id = element.id.substring(0,element.id.length-1);   
  //remove the
  last letter of that div id, which
                                                                              
                   //
  corresponds to the div which contains the
                                                                              
                   //
  biography text

                  //alert(id);                  //used to make sure the 
  substring was
  working, it is.
                  $(id).show();         //this doesn't work for some reason 
  HELP,
  please :(
   });});

  /script
  ...
  div class=bio_button id=timBclick to show Tims bio/div
  div class=bio_button id=bethBclick to show Beths bio/div
  ...
  div class=bio id=tim style=display:none;tim's awesome
  biography/div
  div class=bio id=beth style=display:none;beth's awesome
  biography/div

  PROBLEM(s) (using a click on tim as example):
  1) The above does indeed hide all bio's, and will output an alert of
  tim if I click on tim.  However, it won't change the display style
  to show.

  2) In the javascript, if I replace $(id).show(); with $(tim).show();
  it still doesn't workunless I use tim as one of the class
  definitions in the html instead of a div id.  If I specify tim as a
  class, and use tim explicitly in the javascript, it works perfectly.

  Sorry if this is the wrong forum, i'm losing my mind over what seems
  should be very simple.  Thanks to anyone that can help.

  -Nelson
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~--~~~~--~~--~--~---