You're a dude, thank you.

I agree that it would be better server-side, but it would involve
hacking the core and I'm against that kind of thing, particularly for
something that is purely to satisfy a designer's poncy preference.

Thanks for your help.

osu





On Sep 29, 11:54 am, Liam Potter <radioactiv...@gmail.com> wrote:
> oh I see, this would be better done with some server side code but this
> is how you could do that.
>
> Similar code, just checking for a class.
>
> $("li a.nav-selected").each(function(){
>
> $(this).parents("ul").parents("li").children("a").addClass("nav-selected");
>
> });
> osu wrote:
> > Hi Liam,
>
> > Thanks, I think I didn't make myself clear enough - rather than
> > occurring when you click the link, I need the class to stay in place
> > whenever a child link (i.e. Link 3a, 3b or 3c) is active. I can see
> > the class is being applied on click, but how would I make the class
> > stay in place? Like this didn't work:
>
> > $("li a").ready(function(){
> >     $(this).parents("ul").parents("li").addClass("nav-selected");
> > });
>
> > Thanks,
>
> > osu
>
> > On Sep 29, 11:35 am, Liam Potter <radioactiv...@gmail.com> wrote:
>
> >> It all works fine, except for this bit
> >> $("li ul").siblings("a").click(function(){
> >>                 return false;
> >>             });
> >> there are no a tag siblings of the UL, so that will not work.
>
> >> I've just tested it, and when I click on a subnav link, the class is
> >> added to the LI containing Link 3, if you need it to be added to the a
> >> tag use this
>
> >> $("li a").click(function(){
> >>         
> >> $(this).parents("ul").parents("li").children("a").addClass("nav-selected");
>
> >> });
> >> osu wrote:
>
> >>> Hi Liam,
>
> >>> This is the list I'm working with:
>
> >>> <ul>
> >>>     <li class="nav-path-selected"><a href="#">Link 1</a></li>
> >>>     <li><a href="#">Link 2</a></li>
> >>>     <li class="nav-path-selected"><a href="#">Link 3</a>
> >>>         <ul>
> >>>             <li><a href="#" class="nav-selected">Link 3a</a></li>
> >>>             <li><a href="#">Link 3b</a></li>
> >>>             <li><a href="#">Link 3c</a></li>
> >>>         </ul>
> >>>     </li>
> >>>     <li><a href="#">Link 4</a></li>
> >>> </ul>
>
> >>> I need to add the class 'nav-selected' to Link 3 so I can highlight it
> >>> using the same CSS as used to style Link 3a (the active link in the
> >>> example above). As you can see, Link 1 has a class of 'nav-path-
> >>> selected', so I need to differentiate between that and Link 3 (hence
> >>> why I want to add a 'nav-selected' class to Link 3)
>
> >>> The JQuery I've added to the footer of my page is:
>
> >>> <script type="text/javascript">
> >>>    //<![CDATA[
>
> >>>            $(document).ready(function() {
> >>>                    // Disabledparentlink
> >>>                    $("li ul").siblings("a").click(function(){
> >>>                        return false;
> >>>                    });
> >>>                    $("li a").click(function(){
> >>>                            
> >>> $(this).parents("ul").parents("li").addClass("nav-selected");
> >>>                    });
> >>>            });
>
> >>>    //]]>
> >>> </script>
>
> >>> But nothing is happening...no JS errors in Firebug either - any ideas?
>
> >>> Thanks for your patience,
>
> >>> osu
>
> >>> On Sep 29, 11:07 am, Liam Potter <radioactiv...@gmail.com> wrote:
>
> >>>> I'm assuming you posted an example list and the real list does contain a
> >>>> tags? I'm also assuming you are running that script with a document
> >>>> ready handler?
>
> >>>> osu wrote:
>
> >>>>> Thanks Liam, but that's not working...
>
> >>>>> Not sure why .click is in your example? Am I right in thinking by
> >>>>> adding .parents to the end of each tag in your example that you're
> >>>>> 'going down' different levels in the unordered list?
>
> >>>>> This is what I have:
>
> >>>>> $("li a").click(function(){
> >>>>>    $(this).parents("ul").parents("li").addClass("nav-selected");
> >>>>> });
>
> >>>>> Any ideas what's going wrong?
>
> >>>>> On Sep 29, 10:29 am, Liam Potter <radioactiv...@gmail.com> wrote:
>
> >>>>>> $("li a").click(function(){
> >>>>>>     $(this).parents("ul").parents("li").addClass("className");
>
> >>>>>> });
> >>>>>> osu wrote:
>
> >>>>>>> Hi Ryan,
>
> >>>>>>> That only affects the child of theparent.
>
> >>>>>>> What I want to do is this:
>
> >>>>>>> <ul>
> >>>>>>> <li>Link 1</li>
> >>>>>>> <li>Link 2 *This is the link I want to add a class to*
> >>>>>>>  <ul>
> >>>>>>>   <li>Link 2a</li>
> >>>>>>>   <li>Link 2b</li> *This is the active link*
> >>>>>>>   <li>Link 2c</li>
> >>>>>>>  </ul>
> >>>>>>>    </li>
> >>>>>>> <li>Link 3</li>
> >>>>>>> </ul>
>
> >>>>>>> Rather than affecting a descendent/child of theparentlink, I need to
> >>>>>>> work on the *parentlink* under which the active link is found.
>
> >>>>>>> Any ideas?
>
> >>>>>>> Thanks,
>
> >>>>>>> osu
>
> >>>>>>> On Sep 26, 7:48 pm, "ryan.j" <ryan.joyce...@googlemail.com> wrote:
>
> >>>>>>>> $('.nav-selected:first')
>
> >>>>>>>> On Sep 26, 5:36 pm, osu <onesiz...@googlemail.com> wrote:
>
> >>>>>>>>> Can anyone help with this one please?
>
> >>>>>>>>> Thanks,
>
> >>>>>>>>> osu
>
> >>>>>>>>> On Sep 25, 2:03 pm, osu <onesiz...@googlemail.com> wrote:
>
> >>>>>>>>>> Thanks Ryan for the alternative,
>
> >>>>>>>>>> However, I need to do the following now (see message above your 
> >>>>>>>>>> last
> >>>>>>>>>> post):
>
> >>>>>>>>>> I need to highlight *only* the top-parentitem (the same one I just
> >>>>>>>>>> ran 'return false;' on) with the class 'nav-selected'.
>
> >>>>>>>>>> Any idea how I could do that?
>
> >>>>>>>>>> Thanks,
>
> >>>>>>>>>> osu
>
> >>>>>>>>>> On Sep 25, 11:13 am, "ryan.j" <ryan.joyce...@googlemail.com> wrote:
>
> >>>>>>>>>>> rather than removing the href you could use the preventDefault
> >>>>>>>>>>> function, which will leave the href intact should you want to 
> >>>>>>>>>>> unbind
> >>>>>>>>>>> it at a later date.
>
> >>>>>>>>>>> usage is something like..
>
> >>>>>>>>>>> $('a.submit-button').click(function(e){
> >>>>>>>>>>>         e.preventDefault();
> >>>>>>>>>>>         doSubmit( $(this).html() );
>
> >>>>>>>>>>> })
>
> >>>>>>>>>>> On Sep 24, 5:32 pm, osu <onesiz...@googlemail.com> wrote:
>
> >>>>>>>>>>>> Thanks Andi,
>
> >>>>>>>>>>>> Yes, I meant an unordered list as you showed.
>
> >>>>>>>>>>>> Rather than remove the <a> tag, is it possible to just 
> >>>>>>>>>>>> 'deactivate'
> >>>>>>>>>>>> it? i.e. when you click it, nothing happens, but the <a> tag 
> >>>>>>>>>>>> stays in
> >>>>>>>>>>>> place?
>
> >>>>>>>>>>>> I ask, because I'd like to keep the CSS as simple as possible.
>
> >>>>>>>>>>>> Thanks,
>
> >>>>>>>>>>>> osu
>
> >>>>>>>>>>>> On Sep 24, 6:05 pm, Andi23 <dowhatyouw...@gmail.com> wrote:
>
> >>>>>>>>>>>>> First of all, let's clarify the actual HTML.  I assume this is 
> >>>>>>>>>>>>> what
> >>>>>>>>>>>>> you have:
> >>>>>>>>>>>>> <ul>
> >>>>>>>>>>>>>     <li><a href="#">Link 1</a></li>
> >>>>>>>>>>>>>     <li><a href="#">Link 2</a></li>
> >>>>>>>>>>>>>     <li><a href="#">Link 3</a>
> >>>>>>>>>>>>>         <ul>
> >>>>>>>>>>>>>             <li><a href="#">Link 3a</a></li>
> >>>>>>>>>>>>>             <li><a href="#">Link 3b</a></li>
> >>>>>>>>>>>>>             <li><a href="#">Link 3c</a></li>
> >>>>>>>>>>>>>         </ul>
> >>>>>>>>>>>>>     </li>
> >>>>>>>>>>>>>     <li><a href="#">Link 4</a></li>
> >>>>>>>>>>>>> </ul>
>
> >>>>>>>>>>>>> When you say "remove the link", I assume you want to turn this:
> >>>>>>>>>>>>> <li><a href="#">Link 3</a>
> >>>>>>>>>>>>> into this:
> >>>>>>>>>>>>> <li>Link 3
>
> >>>>>>>>>>>>> Given that, try this jQuery:
> >>>>>>>>>>>>> $("li ul").siblings("a").each(function(){
> >>>>>>>>>>>>>     $(this).replaceWith($(this).html());
>
> >>>>>>>>>>>>> });

Reply via email to