Foros del Web » Programando para Internet » Jquery »

JQuery: Crear y usar Cookies

Estas en el tema de JQuery: Crear y usar Cookies en el foro de Jquery en Foros del Web. Bueno, no conozco mucho de jquery pero estoy usando jquery.cookie.js para la creacion y uso de cookies Y aunque he leido y buscado no entiendo ...
  #1 (permalink)  
Antiguo 01/07/2011, 10:06
Avatar de Alishta7  
Fecha de Ingreso: junio-2009
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
JQuery: Crear y usar Cookies

Bueno, no conozco mucho de jquery pero estoy usando jquery.cookie.js para la creacion y uso de cookies

Y aunque he leido y buscado no entiendo como puedo crear una cookie que tome el nombre id de un elemento al que le hago click. Tengo un menu creado con una lista con etiquetas <ul> y cada ul tiene un ID y quisiera que esta id se almacenara en una cookie para que asi pueda recuperarlo para qye me deje esa lista desplegada.

Por ejemplo aqui trate de crear y usar una cookie que capture por ejemplo el id="lista1" de la primera etiqueta <ul>.

<script type="text/javascript">
$(function(){
(function($){
var VarCookie = $.cookie(this.id);

$.fn.accordion = function(custom) {
var defaults = {keepOpen: false,startingOpen: false}
var settings = $.extend({}, defaults, custom);

if(settings.startingOpen){
$(settings.startingOpen).show();
}

return this.each(function(){
var obj = $(this);
$('li a', obj).click(function(event){
var elem = $(this).next();
if(elem.is('ul')){ event.preventDefault();

if(!settings.keepOpen){ obj.find('ul:visible').not(elem).not(elem.parents( 'ul:visible')).slideUp();
}
elem.slideToggle();
}
});
});
};
})(jQuery);

// check cookie for accordion state
if (VarCookie != "") {
$('#menu').accordion({keepOpen:false, startingOpen: $('#' + VarCookie)});
}


Aqui dejo el codigo html por si aca:

<ul id="menu">
<li><a href="#">Menu 1</a>
<ul id="lista1">
<li><a href="#">Submenu 1</a></li>
<li><a href="#">Submenu 2 ></a>
<ul id="lista1_1">
<li><a href="Pagina.aspx?id=1">Google</a></li>
<li><a href="Pagina.aspx?id=3">Inicio Seguridad</a></li>
<li><a href="Pagina.aspx?id=5">Pagina prueba</a></li>
<li><a href="#">Subsubmenu 4</a></li>
</ul>
</li>
<li><a href="#">Submenu 3</a></li>
<li><a href="#">Submenu 4</a></li>
</ul>
</li>

De antemano gracias a quien pueda guiarme un poco :(

Última edición por Alishta7; 01/07/2011 a las 11:09
  #2 (permalink)  
Antiguo 01/07/2011, 12:56
Avatar de Alishta7  
Fecha de Ingreso: junio-2009
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: JQuery: Crear y usar Cookies

bueno ya pude arreglarlo un poco, me relei los manuales, esta funcionando bien con los menus, pero aun me falta arreglar que funcione con los submenus.

Código HTML:
$(function(){
     (function($){
		
	$.fn.accordion = function(custom) {
	var defaults = {keepOpen: false,startingOpen: false} 
	var settings = $.extend({}, defaults, custom);
				
	if(settings.startingOpen){
		$(settings.startingOpen).show();
		}
			
		return this.each(function(){
		var obj = $(this);
		$('li a', obj).click(function(event){
		var elem = $(this).next();
		if(elem.is('ul')){
		event.preventDefault();
		if(!settings.keepOpen){
		    obj.find('ul:visible').not(elem).not(elem.parents('ul:visible')).slideUp();
			}
		     elem.slideToggle();
                //crea cookie y le da el valor del id del elemento 
	 VarCookie = $.cookie("example",$(elem).attr('id'));
	//alert($(elem).attr('id'));
		}
	         });
	    });
                };
})(jQuery);
		
	
	// De acuerdo al valor del cookie despliega lista
   if ($.cookie("example") != "") { 
         $('#menu').accordion({keepOpen:false, startingOpen:  $('#' + $.cookie("example"))});
        }
         
	});

PD: cada etiqueta UL debe tener un id

Como aun no me recupera los submenus abiertos seguire buscando, si alguien se le ocurre una idea la agradecere mucho :)

Etiquetas: cookies, acordeon
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:54.