well, that is a snippet that needs to be adjusted to the menu classes in 
your layout ....

the point more or less is: you have a "menu" that has no children.... 
changing the highlight on the clicked one leaves you nowhere, cause once a 
link has been clicked you jump to the other page, so the second snippet is 
the only one where the functionality actually works (i.e. applying a 
different style on the page the user is in).
To do that, you must assign the class looking at where the page "stands", 
that is location.pathname.
jQuery has a nice selector syntax where anything that is prefixed with $ 
means "that ends with this string".
So, assuming you are using the scaffolding app from trunk .....

<script>
jQuery(function() {
  var path = location.pathname.substring(1);
  if ( path ) jQuery('ul.nav a[href$="'+path+'"]').closest('li').addClass(
'highlight');
})
</script>

 works

The broken-down functionality is: 
- path is the current url
- please, find all A elements within the <ul class="nav"> ( *jQuery(ul.nav 
a)*)
- filter this set searching for the ones that have an href ending with the 
current location (i.e. the url of the page) *[href=$whatever]*
- go up in the DOM until you find a li (*closest(li)*)
- add a hihglight class (*addclass(highlight)*)


On Tuesday, May 7, 2013 6:24:19 PM UTC+2, Omi Chiba wrote:
>
> Niphlod , thank you for the reply!
>
> Can you provide me actual code workis on new app?
> I'm not sure where I should put the javascript and what value should I 
> specify for 'all a in the menu'.
>
> On Tuesday, May 7, 2013 11:05:27 AM UTC-5, Niphlod wrote:
>>
>> javascript ......
>>  
>> something like
>>  
>> $('all a in the menu').click(function(e) {
>>        $('all a in the menu').removeClass('highlighted');
>>        $(this).addClass('highlighted');
>> })
>>  
>> should work .
>>  
>> You can even generalize it to highlight the current page url 
>> automatically.
>>  
>> var path = location.pathname.substring(1);
>>  if ( path ) $('all a in menu[href$="' + path + '"]').closest('li').
>> addClass('highlight');
>>
>>  
>>
>> Il giorno martedì 7 maggio 2013 17:56:10 UTC+2, Omi Chiba ha scritto:
>>
>>> I have a following response.menu in my menu.py. By default Home is 
>>> highlighted but I want to highlight the menu clicked by the user. For 
>>> example, when user click contact, 'highlighted' class should be added to 
>>> contact and removed from home.
>>>
>>> response.menu = [
>>>     (SPAN('Home', _class='highlighted'), False, URL('default', 'index'), 
>>> []),
>>>     (T('Order Status'), False, URL('default', 'orderstatus'), []),
>>>     (T('Q&A'), False, URL('default', 'qa'), []),
>>>     (T('Contact'), False, URL('default', 'contact'), [])
>>> ]
>>>
>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to