2012-02-26 29 views
1

爲什麼刷新頁面時不能保存cookie?簡單的隱藏/顯示常見問題解答,保存爲cookie

http://jsfiddle.net/jBVBL/

或者這將是更好的做法是隻保存1餅乾每Li和 「主動」

var hideshow = $(".hideShow"); 

hideshow.children().not(".active").each(function(index, value){ 
    var tis = $(this); 

    if($.cookie('hideShow_id'+index) == index){ 
     tis.addClass(".active"); 
    } else { 
     $(this).find("div").hide(); 
    }    
}); 

hideshow.find('h3').click(function(e){ 
    var tis = $(this); 
    var tisindex= tis.parents("li").index; 
     $.cookie('hideShow_id' + tisindex, tisindex); 

     tis.next().slideToggle('2000'); 
     tis.parent().toggleClass('active'); 
    e.preventDefault(); 
}); 


<ul class="hideShow"> 
     <li class="active"> 
     <h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3> 
     <div> 
       <p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p> 
      <ul> 
       <li> 
        <strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li> 
       <li> 

        <strong>Nam</strong> quis lectus enim, ac euismod urna.</li> 
       <li> 
        <strong>Donec</strong> varius massa augue, at feugiat tortor.</li> 
      </ul> 
     </div> 
    </li> 
    <li> 
    <h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3> 
    <div> 
      <p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p> 
     <ul> 
      <li> 
       <strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li> 
      <li> 

       <strong>Nam</strong> quis lectus enim, ac euismod urna.</li> 
      <li> 
       <strong>Donec</strong> varius massa augue, at feugiat tortor.</li> 
     </ul> 
    </div> 
    </li> 
    <li> 
    <h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3> 
    <div> 
      <p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p> 
     <ul> 
      <li> 
       <strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li> 
      <li> 

       <strong>Nam</strong> quis lectus enim, ac euismod urna.</li> 

     </ul> 
    </div> 
    </li> 
</ul> 

值使用:https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js

回答

0

您正在爲每個索引創建一個不同的cookie,並且它們從不匹配您在頁面加載時查找的cookie。此外,你有不同的cookie名稱字符串'hideShow-id'vs'hideShow_id'

+0

好的,謝謝,你能否建議如何解決這個問題我已經嘗試過但是還沒有工作 – 2012-02-26 09:10:44

+0

不要連接索引到cookie名字,cookie名字應該是靜態的 – charlietfl 2012-02-27 14:18:59

0
if($.cookie('hideShow-id') == index){ 

$.cookie('hideShow_id' + tisindex, tisindex); 

顯然是兩個完全不同的Cookie

編輯:

您還可怕濫用index。首先它是一種功能,而不是一種財產。但即便如此,你會在負載獲得不同的索引,然後點擊,因爲你是混淆了兩個不同的指標

tis.parents("li").index() 

的索引;如果該li標籤及其兄弟姐妹之間,那裏的

.each(function(index, value) 

會因爲.not(".active")部分,所以在您正在迭代的集合中給出索引,這顯然是兩個不同的集合。

+0

我已經更新了代碼來解決這個問題,雖然這似乎沒有解決問題 – 2012-02-26 09:09:04

+0

更新了更多問題的答案。 – 2012-02-26 16:46:42