This is quite generalized and is bookmarkable...
- http://enure.net/dev/hide-all-except-one/



On Fri, Feb 22, 2008 at 6:50 AM, J Moore <[EMAIL PROTECTED]> wrote:
>
>
>  good tips so far.
>
>  I just wanted to add that using classes and ids works well.
>
>  <a href="#" id="blackbook" class="show">show blackbook</a>
>  <a href="#" id="redbook" class="show">show redbook</a>
>
>  <div class="book hidden" id="blackbook-content">blackbook stuff...</
>  div>
>  <div class="book hidden" id="redbook-content">redbook stuff...</div>
>
>  This makes your click function simpler.
>
>  $('a.show').click(function(){
>
>     hide_divs();
>     var x = $(this).attr('id');
>     $('#'+ x + '-content').show('fast');
>     return false;
>  });
>
>  The hide_divs method is also a bit simpler.
>
>  var hide_divs = function(){
>     $('div.book').hide('fast');
>  };
>
>  You might notice that the div has a "hidden" class. This just makes
>  initialization simpler, since the items are hidden on page load. The
>  css would be something like:
>
>  div.hidden { display: none; }
>
>  -j
>
>
>
>  On Feb 22, 4:02 am, andrea varnier <[EMAIL PROTECTED]> wrote:
>  > On 21 Feb, 23:03, Sientz <[EMAIL PROTECTED]> wrote:
>  >
>  > >   $('a#blackbook').click(function() {
>  > >     //HIDE DIVS
>  > >     hide_divs();
>  > >     //SHOW LISTED DIV
>  > >     $('.blackbook').show('fast');
>  > >     return false;
>  > >   });
>  >
>  > you see you got all these functions that basically do the same thing.
>  > if an anchor has an id, they show the corresponding div
>  >
>  > I think you could do it like this
>  >
>  > $('a[id]').click(function(){
>  >     hide_divs();
>  >     var x = $(this).attr('id');
>  >     $('div[class=" + x + "]').show('fast');
>  >     return false;
>  >
>  > });
>  >
>  > and should do the same thing.
>  > but you could go further, and use classes in a different way.
>  > let's say that instead of calling them divs with 'human' names, we can
>  > use more 'efficient' names, like:
>  >
>  > hs_a
>  > hs_b
>  > hs_c
>  > hs_d
>  > ...
>  > where hs stands for hide/show (just an example).
>  > in this way the function hide_divs becomes something like
>  >
>  > var hide_divs = function(){
>  >     $('div[class^="hs"]').hide('fast');  /* this selector looks for
>  > the div(s) that have a classname that starts with the string 'hs' */
>  >
>  > };
>  >
>  > then you give corresponding id's to the anchors, so the other on I
>  > wrote before:
>  >
>  > $('a[id^="hs"]').click(function(){
>  >     hide_divs();
>  >     var x = $(this).attr('id');
>  >     $('div[class=" + x + "]').show('fast');
>  >     return false;});
>

Reply via email to