2015-10-19 5 views
0

Я пытаюсь сделать showHide упорным на загрузку страницы, установив файл cookie. Моя проблема в том, что у меня есть более одного div для учетной записи. Как это может быть сделано? Я попытался использовать оператор или, т. Е .:несколько 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):

$(window).load(function() { 
    $(".showHide").on("click", function() { 
     var closed = $(".Div1").is(":hidden"); 
     if (closed) 
      $(".Div1").show(); 
     else 
      $(".Div1").hide(); 

     setCookie("open", closed, 365); 
    }); 

    var openToggle = getCookie("open");  
    if (openToggle=="true") {   
     $(".Div1").show(); 
    } 
    else {   
     $(".Div1").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); 
     } 
    } 
} 

Большое спасибо за помощь.

Я думаю, что он приближается. Я установил <div class="Div1">, но я все равно не могу получить каждый div для открытия (или fadeIn) самостоятельно. Считаете ли вы, что это может иметь какое-то отношение к 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

Поскольку у вас есть несколько дивы, вам нужно перебирать каждый из них и проверить, какие из них скрыты, а затем показать их. Кроме того, вам нужно сохранять и извлекать каждый 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 на странице. Я хочу только по одному. Еще раз спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^