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