JavaScript - Menu estatico

   
Vista:

Menu estatico

Publicado por jose m (2 intervenciones) el 17/05/2016 19:30:08
Buen dia compañeros estoy batallando con un menu, me piden que sea que se conserve los campos cada cambie de pagina en la ultima linea del menu en este caso son 3 lineas, logro mantenerlo hasta 2 pero la tercera al dar clic y hacer el postback se borra todo el menu podrian apoyarme a dejarlo con las 3 lineas y solo se borre si le da clic al menu inicial

por su ayuda gracias


oEIKLfz


anexo codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
var $menu;
 
$(function () {
    $menu = $('#menu');
    draw(menu.options, -1);
 
 
    /*Para mantener el estado del menu entre paginas*/
    if (sessionStorage.menuState) {
        //alert(sessionStorage.menuState);
        var selectedOptions = sessionStorage.menuState.split('|');
        var options = menu.options;
 
 
        for (i = 0; i < selectedOptions.length - 1; i++) {
 
 
            //debugger
            var option = $.grep(options, function (_option, _index) { return _option.name == selectedOptions[i] })
 
             if (options != null || option[0].options != null) {
                try {
                    options = option[0].options;
                    draw(options, i + 1)
                }
                catch (err)
                {
 
                   // alert(err.message)
 
                }
 
            }
        }
    }
}
);
 
var draw = function (_options, _index, _option, _url) {
 
    var $level = $('<div>').remove();
    var $Session = sessionStorage.menuState
 
    if (_option) {
 
        _option.addClass('active');
        _option.siblings().removeClass('active');
        sessionStorage.menuState = '';
        //
 
        $.each($('.active'), function (_index, _active) { sessionStorage.menuState += $(_active).text() + '|'; });
    }
 
    if (_options) {
        $menu.append($level);
        $.each(_options, function (index, option) {
            $option = $('<span>', { text: option.name, class: _index == -1 ? 'mainOption ui-corner-top' : 'option' });
            $option.click(function () {
 
                draw(option.options, $level.index(), $(this), option.url)
 
            });
            $level.append($option);
        });
    }
 
    if (_url) {
       window.location.href = _url;
    }
 
};
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Menu estatico

Publicado por xve (1596 intervenciones) el 17/05/2016 22:02:27
Hola Jose, para ello, tendrás que guardar de alguna manera la posición del menú para volver a reconstruirlo al cambiar de pagina... puedes hacerlo de varias meneras, pero desde javascript, la única que se me ocurre es guardando la posición en una cookie, para posteriormente, al recargar la pagina, reconstruir el menú.

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Menu estatico

Publicado por jose m (2 intervenciones) el 17/05/2016 22:46:59
muchas gracias xve

de hecho ese es mi detalle lo tengo en una variable sessionstorage pero al momento de volver a constriur el menu solo me toma el ultimo clic que le doy al menu y no todo el arbol, no e podido identificar como manener el historial del menu sin que se pierda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Menu estatico

Publicado por xve (1596 intervenciones) el 18/05/2016 07:38:08
Hola Jose, si no sabes reconstruir el menú desde el último clic, entonces tendrás que guardar el menú entero... de esta manera no habrá problemas... aunque lo suyo seria que supieras reconstruirlo desde el último clic.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar