2015-10-19 55 views
0

我試圖通過設置一個cookie來使showHide持久性跨頁加載。我的問題是我有超過一個div來說明。如何才能做到這一點?我試過使用或者操作符,即:multiple divs + javascript + cookie

var closed = $(".Div1").is(":hidden") || $(".Div2").is(":hidden"); 
     if (closed) 
      $(".Div1").show() || $(".Div2").show(); 
     else 
      $(".Div1").hide(); || $(".Div2").hide(); 
    ...etc... 

......但沒有運氣。下面是我如何使用一個單獨的div(Div1):

​​

非常感謝您的幫助。

我覺得它靠近了。我設置了<div class="Div1">,但我仍然無法讓每個div獨立打開(或淡入)。你認爲這可能與var openToggle有關嗎?謝謝。 :-)

更新的代碼〜下午2:45 GMT

$(window).load(function() { 
    $(".showHide").on("click", function() { 
    $("div[class='Div1']").each(function(i,op) { 
    $("div[class='Div1']").fadeOut(1); 
    $("div[class='Div1']").eq($(this).index()).fadeIn(1000); 
    setCookie("open_" + i, closed, 365); 
    }); 
}); 
    $("div[class='Div1']").each(function(i,op) 
    { 
    var openToggle = getCookie("open_" + i);  
    if (openToggle=="true") {   
    $(this).show(); 
} 
else {   
    $(this).hide(); 
} 
}); 
function setCookie(c_name, value, exdays) { 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); 
    document.cookie = c_name + "=" + c_value; 
} 

function getCookie(c_name) { 
    var i, x, y, ARRcookies = document.cookie.split(";"); 
    for (i = 0; i < ARRcookies.length; i++) { 
     x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); 
     y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); 
     x = x.replace(/^\s+|\s+$/g, ""); 
     if (x == c_name) { 
      return unescape(y); 
     } 
    } 
} 
}); 

回答

0

既然你有多個div,你需要通過每一個迭代,並檢查哪些是隱藏,然後向他們展示。此外,你需要保存和提取每個cookie的唯一,所以我利用每個div的索引,並將其附加到cookie名稱。

提供.Div是應用於DIV元素的類。

$(".showHide").on("click", function() { 
      $(".Div1").each(function(i,op) 
      { 
       var closed = $(this).is(":hidden"); 
       if(closed) 
       $(this).show(); 
       else 
       $(this).hide(); 

      setCookie("open_" + i, closed, 365); 
      }); 
    }); 

    $(".Div1").each(function(i,op) 
    { 
    var openToggle = getCookie("open_" + i);  
if (openToggle=="true") {   
    $(this).show(); 
} 
else {   
    $(this).hide(); 
} 
}); 

更新:如果DIV1類被施加到其它元件,

$(".showHide").on("click", function() { 
      $("div[class='Div1']").each(function(i,op) 
      { 
       var closed = $(this).is(":hidden"); 
       if(closed) 
       $(this).show(); 
       else 
       $(this).hide(); 

     setCookie("open_" + i, closed, 365); 
     }); 
}); 

$("div[class='Div1']").each(function(i,op) 
    { 
    var openToggle = getCookie("open_" + i);  
if (openToggle=="true") {   
    $(this).show(); 
} 
else {   
    $(this).hide(); 
} 
}); 
+0

嗯,仍然沒有運氣。謝謝回覆。 –

+0

oops。忘了把getCookie的下劃線字符。修復了代碼。 – DinoMyte

+0

如果將class =「Div1」應用於「​​」,它會影響嗎?我問,因爲最初的點擊揭示了頁面上的每個Div1。我一次只需要一個。再次感謝。 –