2011-08-11 3 views
0

이 내 아코디언의 생성 된 코드입니다 :JQuery와 쿠키는 이전 값을 사용

<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> 

그리고 매번 내가 링크를 클릭, 내가하는 <h3> 링크를 기반 쿠키 "sanjotreeaccordion"의 값을 저장하고

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

은 다음 페이지를 다시로드에, 나는 쿠키 "sanjotreeaccordion"값을 얻을, 그래서는 아코디언 창 열기를 결정하는 데 사용할 수 있습니다 : : 아래

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

알리미가 있음을 눈치 채 셨을 것입니다. 쿠키의 값을 결정할 때 알리미를 사용합니다. WijAccordion은 아코디언을 만드는 함수이며 selectedIndex 옵션의 값에 따라 창을 엽니 다 (0은 첫 번째 창을 나타내며 1은 두 번째를 의미 함).

이제 wierd 부분 (입력 할 때 다음 부분을 수행 중입니다).

처음에는 코드를 실행했지만 쿠키가 아직 존재하지 않으므로 첫 번째 창 (쿠키가 null이므로 0을 반환하고 1에 곱함)이 열립니다. 그 값은 쿠키에 저장됩니다. (나는 쿠키를 확인했는데, 그것은 0이다.)

그런 다음 두 번째 창에서 링크를 클릭 했으므로 쿠키에 1 (경고 값은 1)이라고 저장됩니다. 그러나 페이지가 다시로드되면 쿠키 값의 경고는 여전히 0입니다. 쿠키를 다시 클릭하면 쿠키 값이 1으로 변경됩니다. 즉, 페이지가 다시로드 될 때 쿠키의 이전 값을 얻게됩니다.

내 코드에 어떤 문제가 있습니까? 아니면 내 논리가 올바르지 않습니까? 나는 링크를 상부 <h3>

  • 쿠키에 값을 저장
  • 페이지를 다시로드
  • 을의
  • GET "accindex"를 클릭

    1. 입니다 내가 따라야 할 순서를 따르지 않는 건가요
    2. 쿠키 값을 얻으십시오
    3. 쿠키 값을 사용하여 아코디언의 해당 창을 엽니 다. 당신이보고 할 일들
  • 답변

    0

    커플 :

    1)이 귀하의 질문에 그냥 오타인지,하지만 컨테이너 사업부가 실제로 ID가 "트 리뷰 - 아코디언이 있는지 모르겠어요 "아직까지는"tree-accordian "이라는 ID를 가진 요소 내의 앵커에 클릭 이벤트를 바인딩합니다. 그래서 이것은 왜 쿠키가이 시점에서 올바르게 설정되지 않는지 설명 할 수 있습니다.

    2) 설정된 색인을 사용하여 각 페이지에서 아코디언을 초기화 한 후에도 쿠키를 설정합니다. 그래서 이것이 '이상한 행동을하는 이유'가 될 수 있습니다.

    그런 해결책을 찾기 시작할 것입니다.현재 사용중인 플러그인으로 전체를 확인할 수있는 환경에 대한 액세스 권한이 없지만 올바른 방향으로 안내하지 않는다면 자세히 살펴보아야합니다.

    +0

    안녕하세요, pollo, 답장을 보내 주셔서 감사합니다. 나는 "나무 아코디언"을 찾으려고 노력했는데, 붙여 넣은 코드에서 찾을 수 없습니다. 아마도 당신은 그것을 읽는 중에 서둘러야합니다 : p 여기에있는 코드는 그대로 복사하여 붙여 넣었습니다. 클릭 수 있으므로 ID가 제대로 호출되었음을 알 수 있습니다. – Macinville

    +0

    안녕 Macinville, 미안 해요 내 오타 - 그것은 나무 아코디언 (끝 "에서"통지하지 "내"이전 주석. 희망은 도움이 ... –