Hi Karl, Thanks a lot! your solution is obviously much better and not dependent on how many links there are. since you are using 'each' function.
I had the concept with me but not the power of ins and outs of jQuery :) Next i'll be trying to make http://www.coldfusionjedi.com/demos/sharp/ajaxLoadOnScroll/test.cfm in jQuery+jsp (not PHP for a change) will keep you posted! Thanks -bhaarat On Jan 29, 3:56 pm, Karl Swedberg <[EMAIL PROTECTED]> wrote: > Hi Bhaarat, > > You've done a nice job here! I was wondering, though, if we could take > advantage of the index value of the links, so I re-factored your code > a bit (still using Klaus's cookie plugin). Here is what it looks like: > > $(document).ready(function() { > $('#menu li ul').hide(); > var cookieValue = $.cookie('menuCookie') || ''; > $('#menu > li > a').each(function(index) { > var $this = $(this), $checkElement = $this.next('ul'); > if (cookieValue.indexOf(index) > -1) { > $checkElement.show(); > } > $this.click(function() { > if ($checkElement.is(':hidden')) { > $checkElement.slideDown(); > cookieValue = cookieValue + index; > $.cookie('menuCookie', cookieValue); > } else { > $checkElement.slideUp(); > cookieValue = cookieValue.replace(index,''); > $.cookie('menuCookie', cookieValue); > } > return false; > }); > }); > > }); > > I put up a little demo page here: > > http://test.learningjquery.com/cookie-menu.html > > On the demo page, I also added a little function to show the value of > the cookie and called the function onready and onclick: > > function showCookie() { > if (!$('#jar').length) { > $('<div id="jar"></div>').appendTo('body'); > } > $('#jar').text(document.cookie); > > } > > Cheers, > > --Karl > _________________ > Karl Swedbergwww.englishrules.comwww.learningjquery.com > > On Jan 29, 2008, at 1:41 PM, Bhaarat Sharma wrote: > > > > > Hi, > > > I took the code from jQuery Accordion menu and am using the cookie > > plugin. > > > while searching for a collapse-able menu I saw that a lot of people > > were looking for this but with cookies so when user refreshes..the > > collapse/expand state stay the same. > > > I am new to jQuery and even javascript. > > > But here I have jotted down something which is working for me. > > > Experts out there: if you would like to add some suggestions on how to > > better do this..i'd appreciate it. > > I dont like the fact that i am different cookies for different menu > > items... > > > function initMenu() { > > $('#menu ul').hide(); > > > if ($.cookie('the_cookie1')=='a'||$.cookie('the_cookie2')=='b'|| > > $.cookie('the_cookie3')=='c'|| > > $.cookie('the_cookie4')=='d') > > { > > > if ($.cookie('the_cookie1')=='a') > > $("a").filter(".a").next().slideDown('fast'); > > if ($.cookie('the_cookie2')=='b') > > $("a").filter(".b").next().slideDown('fast'); > > if ($.cookie('the_cookie3')=='c') > > $("a").filter(".c").next().slideDown('fast'); > > if ($.cookie('the_cookie4')=='d') > > $("a").filter(".d").next().slideDown('fast'); > > > } > > > $('#menu li a').click( > > function() { > > var checkElement = $(this).next(); > > if((checkElement.is('ul')) && (checkElement.is(':visible'))) { > > removeCookie($(this).attr('class')); > > checkElement.slideUp('fast'); > > } > > if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { > > setCookie($(this).attr('class')); > > checkElement.slideDown('fast'); > > return false; > > } > > }); > > > /*$('#menu li a').click( > > function() { > > setCookie($(this).attr('class')); > > $(this).next().slideToggle('normal'); > > } > > );*/ > > } > > function setCookie(some) > > { > > var s = some; > > if (s=='a') > > $.cookie('the_cookie1', s); > > else if (s=='b') > > $.cookie('the_cookie2', s); > > else if (s=='c') > > $.cookie('the_cookie3', s); > > else if (s=='d') > > $.cookie('the_cookie4', s); > > > // alert('cookie set ' + s); > > } > > function removeCookie(some1) > > { > > var s = some1; > > if (s=='a') > > $.cookie('the_cookie1',null); > > else if (s=='b') > > $.cookie('the_cookie2',null); > > else if (s=='c') > > $.cookie('the_cookie3',null); > > else if (s=='d') > > $.cookie('the_cookie4',null); > > } > > > $(document).ready(function() {initMenu();});