First, I'd change the HTML to:

<ul class="selector">
        <li><a href="#" id="foo_1">one</a></li>
        <li><a href="#" id="foo_2">two</a></li>
        <li><a href="#" id="foo_3">three</a></li>
</ul>
<div class="youtube">
        <div id="target_foo_1">
                <h1>1</h1>
        </div>
        <div id="target_foo_2">
                <h1>2</h1>
        </div>
        <div id="target_foo_3">
                <h1>3</h1>
        </div>
</div>

You should use IDs instead of classes because you want to target a
specific element. I left the "selector" class because I figure you may
want to have several sets of these items on a page.

The ID on the link will be applied to the selector used to target a div.

$(function (
{
        $('.selector a').click(function()
        {
                $('#target_' + $(this).attr('id'))
                        .siblings('div:visible').hide('fast')
                        .end().show('fast');
                return false;
        });             
});

I'd probably also change the links for buttons.

On Wed, Apr 1, 2009 at 12:09 PM, Johnny <dimas.joh...@gmail.com> wrote:
>
> Hello, I'm wondering if there is a better method for the following
> solution. I would like to find a way to not have to repeat the same
> function over and over in jQuery. So for instance, I have a collection
> of hidden divs, and a collection of selectors below it to show the
> specified div and hide all the others.
>
>
> <div class="youtube">
>            <div class="1">
>            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> In dignissim, est ut ultricies gravida, est leo euismod libero, ut
> commodo massa libero nec felis.
>            </div>
>            <div class="2">
>            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> In dignissim, est ut ultricies gravida, est leo euismod libero, ut
> commodo massa libero nec felis.
>            </div>
>            <div class="3">
>            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> In dignissim, est ut ultricies gravida, est leo euismod libero, ut
> commodo massa libero nec felis.
>            </div>
> </div>
>
>
>        <ul class="selector">
>            <li><a href="#" class="one">one</a></li>
>            <li><a href="#" class="two">two</a></li>
>            <li><a href="#" class="three">three</a></li>
>         </ul>
>
>
>        $(document).ready(function(){
>                $('a.one').click(function() {
>                        $('div.1').show('fast')
>                        .siblings('div:visible').hide('fast');
>                });
>                $('a.two').click(function() {
>                        $('div.2').show('fast')
>                        .siblings('div:visible').hide('fast');
>                });
>                $('a.three').click(function() {
>                        $('div.3').show('fast')
>                        .siblings('div:visible').hide('fast');
>                });
>       });
>
>
> Is there a way to shorten the jQuery to just one function that works
> for each of those cases instead of having to repeat the function for
> each class name?
>
> Thanks!
>

Reply via email to