Much nicer. Thanks for the tip!

On Thu, Apr 2, 2009 at 1:43 PM, mkmanning <michaell...@gmail.com> wrote:
>
> Actually there's an easier way as long as the links and the items
> being hidden/show have a one-to-one relationship.
>
> $(document).ready(function(){
>  var a = $('ul.selector li a'), div = $('div.youtube').children
> ('div');
>  a.click(function(){
>        $(div.hide().get(a.index(this))).show();
>        return false;
>  });
> }
>
>
> On Apr 2, 9:12 am, brian <bally.z...@gmail.com> wrote:
>> 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