jQuery, Menús desplegables. Guardar posición?

Iniciado por skan, 28 Octubre 2011, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

skan

Hola


Imaginad que hago una lista expandible con jQuery,
ya sea con <div data-role="collapsible-set"> o con <ul data-role="listview"> y listas anidadas

Y acabamos seleccionando algún elemento que tiene un link a otra página.
Una página simple con una foto a pantalla completa y un botón para volver atrás.

¿Cómo hago para que al volver atrás se encuentre el menú desplegado exactamente del mismo modo?

La idea es usar jQuery para no tener que meterme con javascript ni cosas más complejas.

Acepto otras ideas.

Kasi

jQuery es javascript... xD

Puedes hacer que al seleccionar el link a esa página le pases una variable con la posición seleccionada del combo o lo que sea.
Al entrar en la página con el botón atrás, recuperas el valor de la página de la que vienes, y al pulsar el botón atrás, vuelves a enviar a la página origen la variable con el valor del combo a poner nuevamente.
Al cargar de nuevo la página original con el combo recuperas ese valor y pones el combo con el valor que le corresponde.

A groso modo creo que es lo mas fácil, espero que te sirva.


Un saludo

skan

Claro, pero ¿Cómo hago eso?
La idea general ya la tenía, preguntaba más bien por algún código concreto.

Mr. Crowley

#3
Suponiendo que ya usted tiene el código del menú desplegable (imagino que es algún tipo de dropdown). El código que estoy colocando es simple y funciona para el ejemplo, pero no es la solución completa para usted; es únicamente para tomarlo como "guía".

Código (html4strict) [Seleccionar]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<style type="text/css">
#divMenu{
background:#ff0000;
}
#divMenu a{
float:left;
background:#ff0000;
padding:10px;
}
#divMenu a span{
background:#ff0000;
display:none;
}
</style>
</head>

<body>
<?php
$strMenu_Activo=(isset($_GET['lnkLink']))?$_GET['lnkLink']:'';
?>

<div id="divMenu">
<a id="lnkEmpresa" href="?lnkLink=lnkEmpresa">
Empresa
<span>
Menu de la empresa
</span>
</a>
<a id="lnkClientes" href="?lnkLink=lnkClientes">
Clientes
<span>
Menu de clientes
</span>
</a>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
var strMenu_Activo='<?php echo $strMenu_Activo?>';

$(document).ready(function(){
if(strMenu_Activo!=''){
$('#'+strMenu_Activo+' span').css('display','block');
}
});
</script>
</body>
</html>


1. Con PHP se toma el contenido de la variable lnkLink y se almacena en una variable PHP llamada strMenu_Activo.
2. Abajo, en el código javascript, tenemos una variable de javascript llamada strMenu_Activo. En esta variable almacenamos exactamente el mismo valor que contiene la variable de PHP.
3. Si el contenido de strMenu_Activo (javascript) es diferente que '', entonces mostramos en bloque el elemento con el ID x (el ID es lo que recuperamos con PHP).

Mejor guarde el código en su máquina y colóquelo en Apache. Dele clic a cualquiera de las opciones para que vea como funciona. Es sólo una idea.

Si tiene el código del menú, páselo, talvez podamos adaptarlo.

Saludos!

EDITO:
Estoy de acuerdo con Kasi, de hecho el ejemplo está hecho pensando en la solución que propone, pero dudo que al volver atrás se logre recuperar el valor de la variable. Es decir, si estamos en index.php y le damos clic a loquesea.php?lnkLink=clientes, en la página que se abre el menú va a aparecer desplegado... pero si le damos clic al botón atrás (navegador) la variable va a estar vacía. Porqué? Porque estuvimos en index.php y no tenía ninguna variable :/ (un poco enredado jejejeje).

Solo en el caso del index.php es, probablemente, donde no le va a funcionar.
Mi blog personal: www.calirojas.com

skan


skan

Hola otra vez

Lo que no he comentado en el mensaje inicial es que la idea es hacerlo para que funcione en Android, por eso quería intentar hacerlo integramente con jQuery, que sé que es compatible. Aunque, por comodidad, en un principio lo estaba probando directamente en el navegador del PC.

Si hiciese falta algo más creo que también le podría añadir javascript pero no sé si el PHP funcionaría.