Virtuál se správou na 4 měsíce za super cenu. AKCE: 1 + 3 měsíce zdarma.
Zobrazují se odpovědi 1 až 5 z 5

JQuery-roll menu

  1. Ahoj,

    zkouším z jednoho tutorialu rolovací menu s jQuery:

    Kód:
    $(document).ready(function()
    {
    	$("#firstpane p.menu_head").click(function()
        {
    		$(this).next("div.menu_body").slideToggle(300).siblings("div.menu_body").slideUp("slow");
    	});
    });
    html:
    Kód:
    <div id="firstpane" class="menu_list">
                   <p class="menu_head"><a href="#">Kategorie1</a></p>
                   <p class="menu_head"><a href="#">Kategorie2</a></p>
                   <div class="menu_body">
                    <a href="#">Podkategorie1</a>
                    <a href="#">Podkategorie2</a>
                   </div>
                   <p class="menu_head"><a href="#">Kategorie3</a></p>
    Problém je v tom, že po výběru nějaké podkategorie se zase zaroluje. Nevíte někdo, jak to vyřešit aby zůstalo rozbalené?

  2. Happy Robot :]

    Co se právě děje na Webtrhu?

  3. Tu: http://roshanbh.com.np/2008/06/accor...ng-jquery.html to funguje (viď zdrojový kód). Medzi nami, menu = <ul><li><a>...</a></li></ul>

  4. Jo to je přesně ono.. jj <p> vidím jako menu taky poprvé..
    ale mě de právě o to, když bych chtěl proklikávat mezi podkategoriemi, abych nemusel pokaždé rozbalit stejnou kategorii, ale aby zůstala po includu stránky už rozbalená..
    už nevím co googlit, tipuju že se tam přidá nějak jen selected nebo něco..
    asi se to budu muset spíš pořádně naučit:/

  5. To se dá pohodlně řešit přes cookies. Tady máš skript pro menu s libovolným počtem úrovní(z toho důvodu je tam i plugin $.getPath(), kterým se zjistí selektor poslední otevřené větve pro uložení do cookies):

    Kód:
    <!doctype html>
    
    <html xmlns='http://www.w3.org/1999/xhtml'>
        <head>
            <title>
                Menu
            </title>
            <meta charset='utf-8' />
            <script src='http://code.jquery.com/jquery-1.7.1.min.js'></script>
            <script>
    
                // Práce s cookies
                cookies = {
                  
                    /**
                     * Nastaví cookie
                     *
                     * @param name       Jméno
                     * @param value      Hodnota
                     * @param expiration Počet dní pro uchování cookie(nepovinný)
                     */
                    set: function(name, value, expiration) {
                        var date = new Date();
                        date.setDate(date.getDate() + expiration);
                        expiration = !expiration ? '' : ';expires=' + date.toUTCString();
                        document.cookie = name + '=' + escape(value) + expiration;
                    },
                  
                    /**
                     * Vrací hodnotu cookie
                     *
                     * @param name Jméno
                     */
                    get: function(name) {
                        if (document.cookie.length) {
                            var start = document.cookie.indexOf(name + '=');
                            if (start != -1) {
                                start += name.length + 1;
                                end = document.cookie.indexOf(';', start);
                                if (end == -1)
                                    end = document.cookie.length;
                                return unescape(document.cookie.substring(start, end));
                            }
                        }
                        return null;
                    }
                };
    
                /**
                 * Vrací selektor prvku
                 */
                jQuery.fn.getPath = function () {
                    if (this.length != 1)
                        throw '$.getPath: Musí být předán přesně jeden element.';
                    var path, node = this;
                    while (node.length) {
                        var
                            realNode = node[0]
                            name = (
                                realNode.localName ||
                                realNode.tagName ||
                                realNode.nodeName
                            );
                        if (!name || name == '#document')
                            break;
                        name = name.toLowerCase();
                        if (realNode.id)
                            return name + '#' + realNode.id + (path ? '>' + path : '');
                        else if (realNode.className)
                            name += '.' + realNode.className.split(/\s+/).join('.');
                        var
                            parent = node.parent(),
                            siblings = parent.children(name);
                        if (siblings.length > 1)
                            name += ':eq(' + siblings.index(node) + ')';
                        path = name + (path ? '>' + path : '');
                        node = parent;
                    }
                    return path;
                };
    
                // Inicializace menu
                $(function () {                
                    
                    // Procházení kategorií
                    $('.menu').on('click', 'a', function() {
                        var
                            $menu = $(this),
                            $submenu = $menu.next('ul');
                        if ($submenu.length) {
                            if ($submenu.is(':visible')) {
                                $submenu
                                    .find('ul')
                                    .slideUp();
                                cookies.set('menu', $submenu.closest('ul').getPath());
                            }
                            else
                                cookies.set('menu', $submenu.getPath());
                            $submenu
                                .slideToggle()
                                .parent()
                                .siblings()
                                .find('ul')
                                .slideUp();
                        }
                    });
                    
                    // Rozevření poslední struktury menu
                    var menu = cookies.get('menu');
                    if (menu) {
                        var $menu = $(menu);
                        while (!$menu.is('.menu')) {
                            $menu = $menu
                                .slideDown(0)
                                // .closest('ul') - closest z nějakého důvodu v 1.7 nefunguje správně
                                .parent()
                                .parent();
                        }
                        cookies.set('menu', '');
                    }
                });
            </script>
            <style>
                .menu li ul {
                    display: none;
                }
            </style>
        </head>
        <body>
            <ul class='menu'>
                <li>
                    <a href='#'>
                        menu 1
                    </a>
                    <ul>
                        <li>
                            <a href='#'>
                                menu 1 1
                            </a>
                            <ul>
                                <li>
                                    <a href='#'>
                                        menu 1 1 1
                                    </a>
                                </li>
                                <li>
                                    <a href='#'>
                                        menu 1 1 2
                                    </a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href='#'>
                                menu 1 2
                            </a>
                            <ul>
                                <li>
                                    <a href='#'>
                                        menu 1 2 1
                                    </a>
                                </li>
                                <li>
                                    <a href='#'>
                                        menu 1 2 2
                                    </a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href='#'>
                        menu 2
                    </a>
                    <ul>
                        <li>
                            <a href='#'>
                                menu 2 1
                            </a>
                        </li>
                        <li>
                            <a href='#'>
                                menu 2 2
                            </a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href='#'>
                        menu 3
                    </a>
                    <ul>
                        <li>
                            <a href='#'>
                                menu 3 1
                            </a>
                        </li>
                        <li>
                            <a href='#'>
                                menu 3 2
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </body>
    </html>

  6. tak to je masakr.. Díky moc!
    škoda, že jde dát jen jeden bod:)

Podobná témata

  1. jquery menu
    By Ivorius in forum Javascript
    Odpovědí: 3
    Poslední příspěvek: 19.09.2008, 13:18
Hostujeme u Server powered by TELE3