2011-08-11 2 views
0

Ceci est le code généré de mon accordéon:cookie jquery utilise la valeur précédente

<div id="treeview-accordion"> 
<h3><a href="#" accindex="0">Basic</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw0"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index"> Home</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile"> View Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit"> Update Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword"> Change Password</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin"> Manage Personnel</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user"> List Personnel</a></span></li> 
        <li><span> Add Personnel</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 
<h3><a href="#" accindex="1">Basic2</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw01"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index2"> Home2</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile2"> View Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit2"> Update Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword2"> Change Password2</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management2</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin2"> Manage Personnel2</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user2"> List Personnel2</a></span></li> 
        <li><span> Add Personnel2</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

Et chaque fois que je clique sur un lien, je sauve une valeur dans le cookie « sanjotreeaccordion » basé sur qui <h3> le lien est sous:

$("#tree-accordion a").bind("click",function(){ 
        var cookie=$(this).closest("div").prev("h3").find("a").attr("accindex"); 
        $.cookie("sanjotreeaccordion", cookie); 
        alert($.cookie("sanjotreeaccordion")); 
        }); 

Puis à la page reload, je reçois la valeur du cookie « de sanjotreeaccordion », donc je peux l'utiliser pour déterminer quel volet accordéon pour ouvrir:

$(document).ready(function(){ 
    alert($.cookie('sanjotreeaccordion')); 
    var ind = ($.cookie('sanjotreeaccordion') || 0)*1; 
    $('#tree-accordion').wijaccordion({'autoHeight':false,'requireOpenedPane':false,'selectedIndex':ind}); 
    $.cookie('sanjotreeaccordion',ind);  
}); 

Vous avez peut-être remarqué que j'ai des alertes, et je l'utilise pour déterminer la valeur du cookie. WijAccordion est la fonction créant l'accordéon, et ouvrira le volet en fonction de la valeur de son option selectedIndex (0 signifie premier volet, 1 signifie 2ème, et ainsi de suite).

Maintenant, la partie wierd (je fais la partie suivante que je tape).

Initialement, quand j'ai couru mes codes, le cookie n'existe pas encore alors il va ouvrir le premier volet (cookie est nul, donc il renvoie 0 puis multiplié par 1). Et puis cette valeur sera enregistrée dans le cookie. (J'ai vérifié le cookie, c'est 0).

Ensuite, j'ai cliqué sur un lien sur le second volet, donc je m'attends à enregistrer 1 dans le cookie (l'alerte dit que la valeur du cookie est 1). Mais lorsque la page est rechargée, l'alerte de la valeur cookie est toujours 0. Lorsque j'ai cliqué sur un lien à nouveau, ce sera le moment où la valeur du cookie est changée en 1. En d'autres termes, j'obtiens la valeur supposée précédente du cookie lorsque la page est rechargée.

Où est le problème avec mes codes? Ou est-ce ma logique qui est incorrecte? Est-ce que je ne suivais pas la séquence que je veux suivre, ce qui est

  1. cliquer sur un lien
  2. get « accindex » de ses supérieurs <h3>
  3. sauver la valeur au cookie
  4. page rechargements
  5. obtenir la valeur du cookie
  6. utiliser la valeur de cookie pour ouvrir le volet approprié de l'accordéon?

Répondre

0

Couple de choses pour vous de regarder:

1) Je ne sais pas si cela est juste une faute de frappe dans votre question ou non, mais votre conteneur div a fait l'id « TreeView-accordéon "et pourtant, vous liez l'événement click à des ancres dans un élément qui a l'identifiant" tree-accordian ". Cela pourrait donc expliquer pourquoi le cookie n'est pas réglé correctement à ce stade.

2) Vous définissez également un cookie après avoir initialisé l'accordian sur chaque page en utilisant l'index qui a été défini. Donc, cela pourrait être la raison pour laquelle vous voyez le comportement étrange.

Ce serait là que je commencerais à chercher la solution.Je n'ai pas accès à un environnement où je peux vérifier complètement avec les plugins que vous utilisez en ce moment, mais si cela ne vous guide pas dans la bonne direction, je serai heureux de regarder plus en détail.

+0

Salut pollo, merci pour la réponse. J'ai essayé de trouver "arbre-accordéon", et il n'est pas trouvé dans les codes que j'ai collés. Probablement vous êtes pressé en le lisant: p Les codes ici ont été copiés-collés tels quels, et ils alertent avec mon clics donc je suppose que c'est une preuve que les ID ont été appelés correctement. – Macinville

+0

Salut Macinville, désolé ma faute de frappe - il était accordéon-arbre (notez le "sur" à la fin pas "un" comme dans mon commentaire précédent. –

Questions connexes