Ergebnis 1 bis 3 von 3

Thema: jquery accordion menü, submenü offen halten

  1. #1
    HTML Newbie
    Registriert seit
    25.11.2014
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard jquery accordion menü, submenü offen halten

    Hallo zusammen,


    momentan bin ich dabei ein vertikales Menü zusammen zu Basteln.
    Nach vielen Testen und Googel suchen, habe ich mir nun einmal das Menü von
    http://perishablepress.com/jquery-ac...menu-tutorial/
    auf http://mastazone.de eingebaut (linkes Menü).


    Das Menü tut im Grunde auch das was es soll, bis auf eine Kleinigkeit.
    Wenn das Untermenü geöffnet wird und ein klick auf einen der Untermenüpunkte gemacht wird, schliesst sich das Untermenü wieder.
    Eigentlich sollte das Untermenü geöffnet bleiben, bis man einen neuen Hauptmenüpunkt bzw. einen Menüpunkt aus dem anderen Menü anklickt.


    Hier einmal der Code:


    Menü:
    Code:
    <div id='cssmenu'>
    <ul>
       <li><a href='http://mastazone.de'><span>Home</span></a></li>
       <li><a href='#'><span>Test1</span></a>
          <ul>
             <li><a href='/?ausw=test1.1'>Test1.1</a></li>
             <li><a href='/?ausw=test1.2'>Test1.2</a></li>
          </ul>
       </li>
       <li><a href='#'><span>Test2</span></a>
          <ul>
             <li><a href='/?ausw=test2.1'>Test2.1</a></li>
             <li><a href='/?ausw=test2.2'>Test2.2</a></li>
          </ul>
       </li>
       <li><a href='#'><span>Test3</span></a></li>
    </ul>
    </div>


    JQuery:

    Code:
    $(document).ready(function(){
    
    
      $('#cssmenu > ul > li:has(ul)').addClass("has-sub");
    
    
      $('#cssmenu > ul > li > a').click(function() {
        var checkElement = $(this).next();
        
        $('#cssmenu li').removeClass('active');
        $(this).closest('li').addClass('active');    
        
        
        if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
          $(this).closest('li').removeClass('active');
          checkElement.slideUp('normal');
        }
        
        if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
          $('#cssmenu ul ul:visible').slideUp('normal');
          checkElement.slideDown('normal');
        }
        
        if (checkElement.is('ul')) {
          return false;
        } else {
          return true;    
        }        
      });
    
    
    });


    CSS:

    Code:
    #cssmenu,
    #cssmenu ul,
    #cssmenu li,
    #cssmenu a {
      margin: 0;
      padding: 0;
      border: 0;
      list-style: none;
      font-weight: normal;
      text-decoration: none;
      line-height: 1;
      font-family: 'Open Sans', sans-serif;
      font-size: 1em;
      position: relative;
    }
    #cssmenu {
      width: 150px;
      border-bottom: 4px solid #656659;
      -webkit-border-radius: 3px;
      -moz-border-radius: 3px;
      border-radius: 3px;
    }
    #cssmenu a {
      line-height: 1.3;
    }
    #cssmenu > ul > li:first-child {
      background: #66665e;
      background: -moz-linear-gradient(#66665e 0%, #45463d 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #66665e), color-stop(100%, #45463d));
      background: -webkit-linear-gradient(#66665e 0%, #45463d 100%);
      background: linear-gradient(#66665e 0%, #45463d 100%);
      border: 1px solid #45463d;
      -webkit-border-radius: 3px 3px 0 0;
      -moz-border-radius: 3px 3px 0 0;
      border-radius: 3px 3px 0 0;
    }
    #cssmenu > ul > li:first-child > a {
      padding: 15px 10px;
      background: url(/menu_images/pattern.png) top left repeat;
      border: none;
      border-top: 1px solid #818176;
      -webkit-border-radius: 3px 3px 0 0;
      -moz-border-radius: 3px 3px 0 0;
      border-radius: 3px 3px 0 0;
      font-family: 'Ubuntu', sans-serif;
      text-align: center;
      font-size: 1.2em;
      font-weight: 300; 
      text-shadow: 0 -1px 1px #000000;
    }
    #cssmenu > ul > li:first-child > a > span {
      padding: 0;
    }
    #cssmenu > ul > li:first-child:hover {
      background: #66665e;
      background: -moz-linear-gradient(#66665e 0%, #45463d 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #66665e), color-stop(100%, #45463d));
      background: -webkit-linear-gradient(#66665e 0%, #45463d 100%);
      background: linear-gradient(#66665e 0%, #45463d 100%);
    }
    
    
    #cssmenu > ul > li {
      background: #e94f31;
      background: -moz-linear-gradient(#e94f31 0%, #d13516 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e94f31), color-stop(100%, #d13516));
      background: -webkit-linear-gradient(#e94f31 0%, #d13516 100%);
      background: linear-gradient(#e94f31 0%, #d13516 100%);
    }
    #cssmenu > ul > li:hover {
      background: #e84323;
      background: -moz-linear-gradient(#e84323 0%, #c33115 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e84323), color-stop(100%, #c33115));
      background: -webkit-linear-gradient(#e84323 0%, #c33115 100%);
      background: linear-gradient(#e84323 0%, #c33115 100%);
    }
    #cssmenu > ul > li > a {
      font-size: .9em;
      display: block;
      background: url(/menu_images/pattern.png) top left repeat;
      color: #ffffff;
      border: 1px solid #ba2f14;
      border-top: none;
      text-shadow: 0 -1px 1px #751d0c;
    }
    #cssmenu > ul > li > a > span {
      display: block;
      padding: 12px 10px;
      -webkit-border-radius: 4px;
      -moz-border-radius: 4px;
      border-radius: 4px;
    }
    #cssmenu > ul > li > a:hover {
      text-decoration: none;
    }
    #cssmenu > ul > li.active {
      border-bottom: none;
    }
    #cssmenu > ul > li.has-sub > a span {
      background: url(/menu_images/icon_plus.png) 96% center no-repeat;
    }
    #cssmenu > ul > li.has-sub.active > a span {
      background: url(/menu_images/icon_minus.png) 96% center no-repeat;
    }
    
    
    #cssmenu ul ul {
      display: none;
      background: #fff;
      border-right: 1px solid #a2a194;
      border-left: 1px solid #a2a194;
    }
    #cssmenu ul ul li {
      padding: 0;
      border-bottom: 1px solid #d4d4d4;
      border-top: none;
      background: #f7f7f7;
      background: -moz-linear-gradient(#f7f7f7 0%, #ececec 100%);
      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f7f7f7), color-stop(100%, #ececec));
      background: -webkit-linear-gradient(#f7f7f7 0%, #ececec 100%);
      background: linear-gradient(#f7f7f7 0%, #ececec 100%);
    }
    #cssmenu ul ul li:last-child {
      border-bottom: none;
    }
    #cssmenu ul ul a {
      padding: 10px 10px 10px 25px;
      display: block;
      color: #676767;
      font-size: .8em;
      font-weight: normal;
    }
    #cssmenu ul ul a:before {
      content: '\00BB';
      position: absolute;
      left: 10px;
      color: #e94f31;
    }
    #cssmenu ul ul a:hover {
      color: #e94f31;
    }

    Hat vlt. jemand eine Idee wie ich das bewerkstelligen kann.
    Ich verzweifel bald an der Geschichte.


    Im Voraus vielen Dank
    Grüße
    Denis
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    HTML Newbie
    Themenstarter

    Registriert seit
    25.11.2014
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: jquery accordion menü, submenü offen halten

    Moin Moin,


    mittlerweile habe ich als Test folgende Ergänzung erhalten.


    Menü:


    HTML-Code:
    <div id='cssmenu'><ul>   <li><a href='http://mastazone.de'><span>Home</span></a></li>   <li <?=($_GET['ausw'] == 'test1.1' || $_GET['ausw'] == 'test1.2') ? 'class="active"' : '';?>><a href='#'><span>Test1</span></a>      <ul>         <li><a href='/?ausw=test1.1'>Test1.1</a></li>         <li><a href='/?ausw=test1.2'>Test1.2</a></li>      </ul>   </li>   <li  <?=($_GET['ausw'] == 'test2.1' || $_GET['ausw'] == 'test2.2') ? 'class="active"' : '';?>><a href='#'><span>Test2</span></a>      <ul>         <li><a href='/?ausw=test2.1'>Test2.1</a></li>         <li><a href='/?ausw=test2.2'>Test2.2</a></li>      </ul>   </li>   <li><a href='#'><span>Test3</span></a></li></ul></div>

    JQuery:
    HTML-Code:
    $(document).ready(function(){
      $('#cssmenu > ul > li:has(ul)').addClass("has-sub");
      $('#cssmenu > ul > li > a').click(function() {    var checkElement = $(this).next();        $('#cssmenu li').removeClass('active');    $(this).closest('li').addClass('active');	            if((checkElement.is('ul')) && (checkElement.is(':visible'))) {      $(this).closest('li').removeClass('active');      checkElement.slideUp('normal');    }        if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {      $('#cssmenu ul ul:visible').slideUp('normal');      checkElement.slideDown('normal');    }        if (checkElement.is('ul')) {      return false;    } else {      return true;	    }		  });
      $("#cssmenu li.active > ul").slideDown(); //alle mit der Klasse "active" werden geöffent bei Seitenaufruf   
    });

    Sprich im PHP Teil des Menüs wird geprüft, ob z.B. der Link "?ausw=test1.1" gesendet wurde und setzt dann auf den Container die class active.


    Im JQuery Teil wurde die Zeile


    HTML-Code:
      $("#cssmenu li.active > ul").slideDown(); //alle mit der Klasse "active" werden geöffent bei Seitenaufruf
    eingefügt.


    Das Menü bleibt allerding immer noch nicht offen.
    Man erkennt aber an dem " - " im Hauptmenü, dass wohl ein Active-Element erkannt wird, da dort ansonsten ein " + " stehen müsste.


    Soweit der Stand


    Grüße
    Denis

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    25.11.2014
    Beiträge
    5
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: jquery accordion menü, submenü offen halten

    Problem ist gelöst.

    Jquery Code:

    HTML-Code:
    $(document).ready(function(){
      $('#cssmenu > ul > li:has(ul)').addClass("has-sub");
      $('#cssmenu > ul > li > a').click(function() {    var checkElement = $(this).next();        $('#cssmenu li').removeClass('active');    $(this).closest('li').addClass('active');	            if((checkElement.is('ul')) && (checkElement.is(':visible'))) {      $(this).closest('li').removeClass('active');      checkElement.slideUp('normal');    }        if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {      $('#cssmenu ul ul:visible').slideUp('normal');      checkElement.slideDown('normal');    }        if (checkElement.is('ul')) {      return false;    } else {      return true;	    }		  });
      $("#cssmenu li.active > ul").show();
    });

Ähnliche Themen

  1. Hilfe zu "Accordion Menü"
    Von elmaex im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 17.04.2014, 19:02
  2. Problem Bilderlink horizontales Accordion Menü
    Von ogmios im Forum HTML & CSS Forum
    Antworten: 7
    Letzter Beitrag: 07.04.2013, 19:37
  3. CSS Menü mit Submenü
    Von Longbow im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 16.05.2010, 23:20
  4. jQuery Menü
    Von Tobse im Forum Script-Archiv
    Antworten: 0
    Letzter Beitrag: 03.01.2010, 13:21
  5. SubMenü
    Von mörchen im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 25.04.2005, 15:40

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •