2016-08-07 7 views
0

私は、パネルのボディを隠し、ページを再読み込みすることによって隠しておくためのオプションに取り組んでいます。それはブートストラップ駆動のコードであり、操作$("#requests").collapse()は、私が見るのが好きではないアニメーションを作り出します。なぜなら、ページをリロードすることによって100個のパネルが壊れてしまい、迷惑になる可能性があるからです。だからこれを行うにはいくつかのより良い方法はありますか?ブートストラップ要素のクッキーを読み込むためのより良い方法

function getCookie(cname) { 
    var name = cname + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length,c.length); 
     } 
    } 
    return ""; 
} 

function setCookie(cname) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (365*24*60*60*1000)); 
    var expires = "expires="+d.toUTCString(); 
    if(getCookie(cname) == 1) { 
     document.cookie = cname + "=" + 0 + "; " + expires; 
    } else { 
     document.cookie = cname + "=" + 1 + "; " + expires; 
    } 
} 

window.onload = function applyCookies() { 
    if(getCookie("hidden") == 1) { 
     $("#requests").collapse(); 
    } 
} 
+0

にあなたの関数を変更します。そのため、私はブートストラップ固有の属性や関数を適用してこの問題を解決する方が好きです。 –

答えて

1
if(getCookie("hidden") == 1) { 
     $("#requests").hide(); 
    } 
+0

'$("#requests ")。hide()'を適用した後は、パネルのボディを隠すことはできません。また、ページを開いている間に身体がどのようにして隠れているかが分かります。 –

+0

表示する: '$("#requests ")。show()'。 JQueryがHIDE関数を完全にロードして実行していないため、ページをロードする際に要素が表示されます。だからこのCSSを使う: '#requests {display:none}' –

0

#request{ display:none; }

を追加し、あなただけの私がどんなブートストラップの要素を上書きするか、それを変更しないようにしよう、この

window.onload = function applyCookies() { 
    if(getCookie("hidden") == 0) { 
     $("#requests").css("display","block"); 
    } 
} 
+0

最初の答えを読んだのとまったく同じです。しかし、それは元のコードの否定です。今、私はページをリロードするたびにたくさんのパネルを開いています。 –

+0

クッキーが正しく削除されていない可能性があります。それが私にこれを説明できる唯一の方法だろう – RPaul

+0

@TheMatrixISRealで説明されたのと同じ理由があると思います。 –

関連する問題