Un simple ocultar/mostrar para las preguntas más frecuentes que salva a la galleta
-
13-11-2019 - |
Pregunta
¿Por qué no guardar la cookie cuando actualice la página?
O sería mejor práctica para guardar sólo 1 cookie con el valor de cada li con ".activa"
var hideshow = $(".hideShow");
hideshow.children().not(".active").each(function(index, value){
var tis = $(this);
if($.cookie('hideShow_id'+index) == index){
tis.addClass(".active");
} else {
$(this).find("div").hide();
}
});
hideshow.find('h3').click(function(e){
var tis = $(this);
var tisindex= tis.parents("li").index;
$.cookie('hideShow_id' + tisindex, tisindex);
tis.next().slideToggle('2000');
tis.parent().toggleClass('active');
e.preventDefault();
});
<ul class="hideShow">
<li class="active">
<h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3>
<div>
<p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p>
<ul>
<li>
<strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li>
<li>
<strong>Nam</strong> quis lectus enim, ac euismod urna.</li>
<li>
<strong>Donec</strong> varius massa augue, at feugiat tortor.</li>
</ul>
</div>
</li>
<li>
<h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3>
<div>
<p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p>
<ul>
<li>
<strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li>
<li>
<strong>Nam</strong> quis lectus enim, ac euismod urna.</li>
<li>
<strong>Donec</strong> varius massa augue, at feugiat tortor.</li>
</ul>
</div>
</li>
<li>
<h3><a href="javascript:;">Pellentesque nec leo cursus ipsum rhoncus volutpat nec eget mi.</a></h3>
<div>
<p>Nam velit metus, vulputate eget sodales ut, dignissim vehicula nisi. Lorem ipsum dolor sit amet</p>
<ul>
<li>
<strong>Pellentesque</strong> nec leo cursus ipsum rhoncus volutpat nec eget mi.</li>
<li>
<strong>Nam</strong> quis lectus enim, ac euismod urna.</li>
</ul>
</div>
</li>
</ul>
El uso de: https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js
Solución
Está creando una cookie diferente para cada índice, y nunca coinciden con la que busca en la carga de la página.Además, tiene diferentes cadenas de nombres de cookies 'Hideshow-ID' vs 'hideshow_id'
Otros consejos
if($.cookie('hideShow-id') == index){
y
$.cookie('hideShow_id' + tisindex, tisindex);
son claramente los dos completamente diferentes de las cookies
EDITAR:
También está horriblemente mal uso de index
.En primer lugar es una función, no una propiedad.Pero incluso entonces, usted va a obtener diferentes índices de carga y haga clic en porque estás confundiendo dos índices diferentes
tis.parents("li").index()
es el índice, si el li
etiqueta de entre sus hermanos, donde como
.each(function(index, value)
le dará el índice dentro del conjunto que se itera, que son claramente los dos conjuntos diferentes, debido a la .not(".active")
parte.