Well, I haven't seen any other accordion panes with working links so it's
hard to tell where he'll put that data... if the data DIVs were all siblings
(as they are currently) then this would work. There is a minor problem with
siblings in that Mitchell's detail pane header (attrtext) is a sibling
too... so, given the existing structure, the jQuery code would have to be
something more like:

$( targetId ).show().siblings().not('#attrtext').hide();

Really though, the two main points I was trying to express were:

1) that it looks like there could be around 50 links... it would be easier
to read, develop and maintain if there was one function (or a few functions)
that governed all links and data instead of one click function per link.
With three links (currently) it's manageable... with 50 it would be a
needlessly verbose and bloated beast.

2) that there's no need to introduce additional class names or other hooks
for information that's already accessible to jQuery (like :visible)

Brian.

On 8/3/07, Wizzud <[EMAIL PROTECTED]> wrote:
>
>
>
> There is a possible problem using siblings() - if Basics:Location is the
> current selection, and you then browse through the other accordion panels
> then presumably while you are opening/closing panels the RH panel does not
> change, ie still showing Locations; if you decide to click on Belly in the
> Pattern panel, then you need to close Basics:Location which is not a
> sibling
> of the one you need to open!
>
>
>
> Brian Cherne wrote:
> >
> > Hi Mitchell, I'm going to try writing some code and hopefully you'll get
> > the
> > idea and make it work (as it's untested). Basically, instead of writing
> > everything out verbosely... try to determine automatically what needs to
> > happen from the information stored in the DOM.
> >
> > $('.AccordionPanelContent a').click(function(){
> >     var targetId = this.id.toLowerCase();
> >     var txt = $(this).text();
> >
> >     $("#attrname").css('background-color','#8FA9C5');
> >     $("#attrtext").text( txt );
> >
> >     $( targetId ).show().siblings().hide();
> > });
> >
> > I'm not sure about that last line... it depends on how many siblings.
> You
> > may consider rewriting it:
> >
> > $( targetId ).show().siblings(':visible').hide();
> >
> > Or, possibly:
> >
> > $( targetId ).siblings(':visible').hide().end().show();
> >
> > This page in the documentation is your friend:
> > http://docs.jquery.com/DOM/Traversing
> >
> > Also, while I've coded this with your example/HTML in mind I really have
> > to
> > say that I do not like having an id of "location" and an id of
> "Location"
> > ... that's just screaming for trouble.
> >
> > Cheers,
> > Brian.
> >
> >
> >
> > On 8/2/07, Mitchell Waite <[EMAIL PROTECTED]> wrote:
> >>
> >>  That helps a lot Glen but I am still stuck.
> >>
> >>
> >>
> >> Here is my link
> >>
> >>
> >>
> >> http://www.whatbird.com/wwwroot/Components/Accordion%20Menu.html
> >>
> >>
> >>
> >> Each of the items inside a main menu will open its own layer, you can
> see
> >> the first two are working.
> >>
> >>
> >>
> >> And excuse my confusion I should have called this "*close all divs but
> >> one
> >> *" as it has nothing to do with "show all"
> >>
> >>
> >>
> >> I don't think :last applies to the last DIV  clicked.
> >>
> >>
> >>
> >> In a DIV can I use an ID and a class at the same time? Because if that
> >> was
> >> possible I could use addclass to hide all the divs with that class,
> then
> >> show the one that is clicked (assuming I could make the close all
> happen
> >> before the show)
> >>
> >>
> >>
> >> I'm not using any tables, and all I know is if an object is visible or
> >> invisible.
> >>
> >>
> >>
> >> Thanks
> >>
> >>
> >>
> >> Mitch
> >>
> >>
> >>
> >>
> >>
> >> *From:* jquery-en@googlegroups.com [mailto:[EMAIL PROTECTED]
> >> *On
> >> Behalf Of *Glen Lipka
> >> *Sent:* Thursday, August 02, 2007 7:30 PM
> >> *To:* jquery-en@googlegroups.com
> >> *Subject:* [jQuery] Re: Show all?
> >>
> >>
> >>
> >> Might be easier if you post an page that isn't working.  We could be
> more
> >> specific.
> >> However...
> >> Use a "class" when you want to refer to something that is repeated on
> the
> >> page.
> >> Also you can use :last to find the last one.
> >> $("tr:last").show() would show the last row found.
> >>
> >> Does that help?
> >>
> >> Glen
> >>
> >>  On 8/2/07, *Mitchell Waite* <[EMAIL PROTECTED]> wrote:
> >>
> >> What I am looking for is a way to hide the last one of these that was
> >> clicked. I tried saving the object that was last used in a var but that
> >> didnt work. I thought then maybe I could create some kind of "close
> all"
> >> that would close all the other layers but not the one we have clicked
> to
> >> show.
> >>
> >>            $('#Location').click(function() {
> >>          $("#attrname").css('background-color','#8FA9C5');
> >>          $("#attrtext").text("Location");
> >>          $("#location").show();
> >>          $("#shape").hide();
> >>    });
> >>
> >>        $('#Shape').click(function() {
> >>          $("#attrname").css('background-color','#8FA9C5')
> >>          $("#attrtext").text("Shape");
> >>          $("#location").hide();      /* should hide location */
> >>          $("#shape").show();
> >>    });
> >>
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Show-all--tf4210083s15494.html#a11977192
> Sent from the JQuery mailing list archive at Nabble.com.
>
>

Reply via email to