2013-06-16 3 views
0
var openClose = $('.openClose'); 
openClose.on('click', function() { 
    var cook = ReadCookie('slideHide'), 
     miniParent = $(this).parent().parent().parent().children('.main-content'), 
     miniDisp = miniParent.css('display'); 
    if (miniDisp ==="block") { 
     KillCookie('slideHide'); 
    $(this).parent().parent().parent().children('.main-content').slideUp(); 
    var slide = cook + "," + "#"+$(this) 
         .parent() 
         .parent() 
         .parent() 
         .parent().attr("id") + 
         " #"+$(this).parent() 
         .parent().parent().attr("id"); 
      SetCookie('slideHide', slide, 100); 
     } 
     else 
     { 
    $(this).parent().parent().parent().children('.main-content').slideDown(); 
     var newCookie=[]; 
    var a= $('.module').children('.main-content').filter(":hidden"); 
     for(var i=0;i<a.length;i++){ 
     var d = $(a[i++]); 
     var c = "#"+d.parent('.module').attr('id'); 
     } 
     newCookie= c; 
     console.log(newCookie); 
       KillCookie('slideHide'); 
       SetCookie('slideHide',d, 100); 
     } 
    }); 

Это мои печенья функции:Cookie код не вынимая открытый элемент печенья

function SetCookie(cookieName,cookieValue,nDays) { 
    var today = new Date(); 
    var expire = new Date(); 
     if (nDays==null || nDays==0) nDays=1; 
     expire.setTime(today.getTime() + 3600000*24*nDays); 
     document.cookie = cookieName+"="+escape(cookieValue) 
     + ";expires="+expire.toGMTString(),';path = /'; 
     } 

    function KillCookie(cookieName) { 
     SetCookie(cookieName,"", - 1); 
    } 

    function ReadCookie(cookieName) { 
     var theCookie=""+document.cookie; 
     var ind=theCookie.indexOf(cookieName+"="); 
    if (ind==-1 || cookieName=="") return ""; 
     var ind1=theCookie.indexOf(";",ind); 
     if (ind1==-1) ind1=theCookie.length; 
     return unescape(theCookie.substring(ind+cookieName.length+1,ind1)); 
     } 

Установка куки, чтобы сделать его slideUp и остаться скрытые работы, но когда я пытаюсь открыть его, он slidesDown, то я обновляю страницу, чтобы она не оставалась открытой, как должна.

Чтобы получить вид картины - http://jsfiddle.net/zRT9u/

Если вам нужно знать больше, пожалуйста, спросите меня, я готов предоставить больше!

Я редактировал JavaScript это почти работает, но я не получаю все объекты, которые мне нужны

NEW Edit- Пробовал функцию $.map(), но когда я открываю один, и обновить все из них в настоящее время открыты?

else { 
    $(this).parent().parent().parent().children('.main-content').slideDown(); 
KillCookie('slideHide'); 
    var newCookie=[]; 
    var a= $('.module').children('.main-content').filter(":hidden"); 
    var c = $.map(a,function(n,i){ 
     return $(n).parent().attr('id'); 
    }); 
    newCookie= c; 
    SetCookie('slideHide',newCookie, 100); 
    } 

ответ

0

Fixed его с помощью $.map и .join()

var openClose = $('.openClose'); 
    openClose.on('click', function() { 
    var cook = ReadCookie('slideHide'), 
     miniParent = $(this).parent().parent().parent().children('.main-content'), 
     miniDisp = miniParent.css('display'); 
     if (miniDisp ==="block") { 
      KillCookie('slideHide'); 
$(this).parent().parent().parent().children('.main-content').slideUp(); 
     var slide = cook+","+ "#"+$(this).parent().parent().parent().attr("id"); 
     SetCookie('slideHide', slide, 100); 
     } else { 
$(this).parent().parent().parent().children('.main-content').slideDown(); 
    KillCookie('slideHide'); 
    var newCookie=[], 
    a= $('.module').children('.main-content').filter(":hidden"), 
    c = $.map(a,function(n,i){ 
    return "#"+$(n).parent().attr('id'); 
}); 
newCookie= c.join(','); 
    SetCookie('slideHide',newCookie, 100); 
    } 
}); 

При создании «глобальной» массив, а затем с помощью функции $.map, а также добавление "#"+ функции карты я был в состоянии получить фактическое Идентификаторы имен. Затем я установил newCookie в c.join(','), и после этого все отлично работает!

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