2017-11-13 1 views
0

동적으로 생성 된 여러 div의 토글 클레스 상태를 저장하고 LocalStorage에 저장하려고하므로 새로 고침하거나 페이지를 다시 방문 할 수 있습니다. . 나는 코드의 한가운데에 머물렀고 아이디어는 더 이상 없었다. 여기에서 발견 한 모든 해결책은 작동하지 않으며 단일 요소를 참조하거나 addClass/removeClass와 상태를 혼합하여 사용합니다.동적으로 생성 된 div의 상태를 저장하고 Cookie/LocalStorage를 사용하여 저장

쿠키로 저장하는 것도 옵션 일 수 있습니다.

HTML :

<div id="row_parent_41" class="parent"> 
<div id="page_41"> 
<span class="showhide" id="more_2"><img src="plus.png" /></span> 
</div> 

<div id="holder_41" class="child">stuff goes here</div> 

jQuery를 :

var inactiveHolder = localStorage.getItem('child') == 'true'; 
$(".showhide").on('click', function() {  
$(this).closest(".parent").find(".child").slideToggle().toggleClass('inactiveHolder'); 
$('.child').toggleClass('clicked', inactiveHolder); 
return false; 
}); 
+0

스토어 당신이 – Endless

답변

1

당신을 위해이 코드를 사용할 수 있습니까? 나는 또한 변경 코드에서 오타가 (이 (가 모든으로 서버에 보낼 수없는 경우 로컬 스토리지와

var inactiveHolder = localStorage.getItem('child'); 

// set initial state 
if (inactiveHolder == 'true') { 
    $('.child').addClass('clicked'); 
} 

// change localstorage and class 
$('.showhide').on('click', function() { 
    var element = $(this).closest(".parent").find(".child"); 
    $(element).slideToggle().toggleClass('clicked'); 
    localstorage.setItem('child', $(element).hasClass('clicked')); 
    return false; 
}); 
+0

감사 재스퍼을 요청했지만 작동하지 않습니다. hasClass ('clicled'))))) .. 행운은 없습니다. 이상하지만 다른 많은 솔루션도 작동하지 않습니다. 심지어 어린이들에게 중첩 된 "차일드"사이에 충돌이있는 경우를 대비해 html을 최소화하여 테스트를했습니다. – Grashopper

+0

위의 제안 사항을 통해 내가 만든 바이올린을 만들었습니다. https://jsfiddle.net/pivi/1nhmx821/2/ – Grashopper

+0

I 당신의 바이올린을 보았습니다 : https://jsfiddle.net/1nhmx821/4/ 그것은 나를 위해 작동합니다, 나는 console.log를 추가하고 경고합니다. 클릭하면 클래스가 적용되고 localStorage에는 적용됩니다. –

관련 문제