Thanks Wizzud.

I wanted to quickly reply to your question regarding the links.

I plan to have real URLs for the links so that it can degrade
gracefully if JS isn't on (some crazy users, search spiders etc), but
when JS is on to capture the click event rather than follow it
(returning false). :)

Great tips in here guys.. Thanks again for the insights. :)

David

On Nov 22, 3:04 am, Wizzud <[EMAIL PROTECTED]> wrote:
> Right.
>
> All your anchors have href's - do these go anywhere?
> If they do (and they're not just bookmarks) then what's the point of
> showing/hiding anything?
> If they don't then why are they there?
>
> Reason for asking is that unless you really, really want or need those
> anchors you could simplify your html (and script a little bit) by
> removing them and setting a click on the list item. Then your use of
> 'child' is accurate because the ul would actually be a child of the
> clicked element, whereas at the moment the ul is _not_ a 'child' of
> the anchor.
>
> Example using current html (as provided in previous post)...
>
> $('#control a').click(function(){
>     var list = $(this).next();
>     if(list.is(':visible')){
>       list.hide();
>     }else{
>       $
> (this).parent().siblings().find('ul:visible').add(list[0]).toggle();
>       // or $('#control ul:visible').add(list[0]).toggle(); if not
> multi-levelled
>       // or $(this).parent().siblings().find('ul:visible').hide();
> list.show();
>       // or ... etc, etc
>     }
>     return false;
>   });
>
> Example using simplified html (squished for space!)...
>
> <ul id="control">
>         <li>A
>                 <ul><li>AAAAA</li></ul>
>         </li>
>         <li>B
>                 <ul><li>BBBBB</li></ul>
>         </li>
>         <li>C
>                 <ul><li>CCCCC</li></ul>
>         </li>
>         <li>D
>                 <ul><li>DDDDD</li></ul>
>         </li>
> </ul>
>
> $('#control li').click(function(){
>     var list = $('ul', this);
>     if(list.is(':visible')){
>       list.hide();
>     }else{
>       $(this).siblings().find('ul:visible').add(list[0]).toggle();
>     }
>     return false;
>   });
>
> These are simply examples and there are other permutations of jQuery
> calls.
> The main point is that you don't really need to store anything; jQuery
> can be used to hide/show all the necessary at the time of the click.
>
> HTH
>
> On Nov 21, 4:56 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> > Thanks for asking, let me try and clear up some of your questions.
>
> > The DOM looks something like this:
>
> > <ul id="control">
> >         <li><a href="A">A</a>
> >                 <ul>
> >                         <li>AAAAA</li>
> >                 </ul>
> >         </li>
> >         <li><a href="B">B</a>
> >                 <ul>
> >                         <li>BBBBB</li>
> >                 </ul>
> >         </li>
> >         <li><a href="C">C</a>
> >                 <ul>
> >                         <li>CCCCC</li>
> >                 </ul>
> >         </li>
> >         <li><a href="D">D</a>
> >                 <ul>
> >                         <li>DDDDD</li>
> >                 </ul>
> >         </li>
> > </ul>
>
> > - Onload all nested ULs (withing #control) are hidden
> > - On first click, first child of the <a> is :visible
> > - On Second click:
> >   - Was the second click the same as the first click?
> >   - Yes: Toggle closed the child UL
> >   - No: Close anything open (there should only be 1 open at anytime),
> > then open the corresponding child UL
>
> > So like I stated earlier I guess where I'm stumbling is on how to
> > collect and check back and know what was actually clicked, and how to
> > keep checking agaisnt it in the future.
>
> > Hope that clears things up. :)
>
> > David
>
> > On Nov 20, 5:19 pm, Wizzud <[EMAIL PROTECTED]> wrote:
>
> > > Some questions:
>
> > > What happens on the first click? Nothing, or "Hide child ul"?
> > > What happens on the third, fourth, nth, clicks? Does any one click
> > > always check against the preceding click, regardless of whether that
> > > preceding click matched it's own preceding click or not?
> > > Are you always checking nth click against (n-1)th click? Or, if you
> > > get a match [ nth = (n-1)th ] are you clearing down your 'clicks
> > > stack' and starting again from 'first' click?
> > > What is 'child ul' a child of? The preceding [ (n-1)th ] clicked
> > > element? Or does it depend on whether nth = (n-1)th?
>
> > > On Nov 20, 6:22 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> > > > Hello everyone,
>
> > > > Just started working with jQuery in the past few weeks, fairly
> > > > impressed thus far. :)
>
> > > > I've got a questions which actually might touch base more on a general
> > > > JS question but figured might as well ask it.
>
> > > > What I'm trying to do:
>
> > > > // What got clicked first? (capture)
> > > > // What was clicked Second? (capture)
> > > > // Was the second click the same as the first?
> > > >    // Hide child ul
> > > >    // else
> > > >    // Hide child ul + open new child from second parent
>
> > > > I guess my key stumbling block is storing the last clicked element
> > > > into memory to check agaist during the next function call.
>
> > > > I've this so far:
> > > > var $whatClicked = ($(this).get());
>
> > > > Any help is greatly appreciated.
>
> > > > Cheers,
> > > > David

Reply via email to