Ankündigung

Einklappen
Keine Ankündigung bisher.

Untermenü soll geöffnet bleiben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Untermenü soll geöffnet bleiben

    Hallo zusammen!

    Ich bin seid einiger Zeit am rumbasteln und bekomme es einfach nicht hin.
    Ich habe ein Accordion-Menü mit Untermenüs gebaut. Funktioniert auch alles soweit super. Nun möchte ich gerne das wenn man auf ein Untermenü klickt das solange geöffnet bleibt bis man ein neues anklickt.

    Hier mal mein Menüaufbau:
    Code:
    <div id="Accordion">
       <dl>
        	<dt class="dt"><a href="index.html" target="_self" class="a">Startseite</a></dt>
            
    	<dt class="dt"><a href="Aktuelles.html" target="_self" class="a">Aktuelles</a></dt>
            
            <dt class="dt"><a href="Ueber_uns.html" target="_self" class="a">Über uns</a></dt>
            
            <dt class="dt"><a href="Hovawart.html" target="_self" class="a">Hovawart</a></dt>
            
            <dt class="dt"><a class="a" href="#">Unsere Hunde</a></dt>
                <dd>
                	<ul>
                        <li><a href="Asaria.html" target="_self" class="a">Asaria</a></li>
                        <li><a href="Ginny.html" target="_self" class="a">Ginny</a></li>
                        <li><a href="Unvergessen.html" target="_self" class="a">Unvergessen</a></li>
                    </ul>
                </dd>
    
            <dt class="dt"><a href="Kontakt.php" target="_self" class="a">Kontakt</a></dt>
            
            <dt class="dt"><a href="Impressum.html" target="_self" class="a">Impressum</a></dt>
       </dl>
    </div>
    Hier mein jetziges jQuery-Script:
    Code:
    $(function()
    	{
    		$("dd").hide();
    		$("dt a").click(function(){
    			
    				$("dd").slideUp("slow");
    				$(this).parent("dt").next("dd").slideDown("slow");
    			});
    	});
    Ich habe herausgefungen, das ich folgendes in mein Spript einbauen muss, damit das geöffnet bleibt:
    Code:
    $('#' + this.id + '.expandfirst ul:first').show();
    Aber egal wie ich es gemacht und probiert habe, es klappt nicht.
    Wo liegt mein Fehler? Bitte um Eure Hilfe!


  • #2
    Schade das niemand eine Idee hat.

    Ich bin nach ewig langem Suchen und Probieren nicht weitergekommen.

    Kommentar


    • #3
      Würde vermutlich ins document.ready gehören (ich nehme an mit "geöffnet bleiben" meint, das beim kompletten Neuladen der Seite das gewählte Tab wieder geöffnet werden soll).

      Code:
      $('#' + this.id + '.expandfirst ul:first')
      Hast du das mal debugged? Trifft dein Selektor überhaupt ein Element bzw. das richtige?
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Beim Klick auf einem Link landet der Besucher aktuell auf der verlinkten Seite. Gib das Menü doch einfach per PHP aus.

        Mit einem kleinen Framework a la Silex, Slim oder auch Laravel wäre das auch schnell umgesetzt.
        I like cooking my family and my pets.
        Use commas. Don't be a psycho.
        Blog - CoverflowJS

        Kommentar


        • #5
          Zitat von lstegelitz Beitrag anzeigen
          Würde vermutlich ins document.ready gehören
          Die Frage ist nur, wohin genau? Habe schon viel Probiert, aber nichts hat das bis jetzt bewirkt.

          Zitat von lstegelitz Beitrag anzeigen
          (ich nehme an mit "geöffnet bleiben" meint, das beim kompletten Neuladen der Seite das gewählte Tab wieder geöffnet werden soll).
          Ja, genau das meinte ich. Also wenn ein User einen Link im Untermenü anklickt, lädt sich die Seite ja komplett neu. Ich möchte auf keinen Fall mit Frames oder sowas arbeiten.

          Code:
          $('#' + this.id + '.expandfirst ul:first')
          Zitat von lstegelitz Beitrag anzeigen
          Hast du das mal debugged? Trifft dein Selektor überhaupt ein Element bzw. das richtige?
          Ja (wenn ich es richtig gemacht habe), einen Fehler habe ich bis jetzt nicht angezeigt bekommen.

          Kommentar


          • #6
            Zitat von rudygotya Beitrag anzeigen
            Beim Klick auf einem Link landet der Besucher aktuell auf der verlinkten Seite. Gib das Menü doch einfach per PHP aus.

            Mit einem kleinen Framework a la Silex, Slim oder auch Laravel wäre das auch schnell umgesetzt.
            Ohje, meine Fragezeichen werden immer größer und größer und größer!
            Leider weiß ich nicht, was Du damit meinst.

            Kommentar


            • #7
              @ lstegelitz

              Ich habe jetzt am Anfang des Scriptes das
              Code:
              $( document ).ready()
              eingefügt. Darunter dann das
              Code:
              $('#' + this.id + '.expandfirst ul:first')
              . Richtig?

              Jetzt muss ich (wenn ich das richtig verstanden habe) in meinem HTML-Code ja noch irgendwo die class "expand" vergeben. Das müsste dann doch bei den "ul`s" sein. Und die "#" muss ich dann doch auch noch ersetzen...

              Kommentar


              • #8
                http://learn.jquery.com/using-jquery...ocument-ready/

                Das 'expand' müsste von PHP Seite aus gesetzt werden (dazu müsstest du serverseitig allerdings wissen, welcher Tab zuletzt geöffnet war)
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Auf der Seite war ich auch gerade schon.
                  Mein Problem ist, das meine Englischkenntnisse nicht ausreichen um zu verstehen was dort steht.
                  Mit einem Übersetzer habe ich das auch schon versucht, aber das ist dann natürlich nicht so klar übersetzt.

                  Habe ich Dich richtig verstanden, das ich meine Seiten als PHP speichern muss und nicht as HTML?
                  Was meinst du mit
                  Code:
                  dazu müsstest du serverseitig allerdings wissen, welcher Tab zuletzt geöffnet war
                  ?

                  Ohje, ich glaube ich sollte das aufgeben...

                  Kommentar


                  • #10
                    Naja, du könntest mit Javascript ein Cookie setzen, in dem du das aktuelle Tab immer speicherst.
                    Local storage wäre auch ein Stichwort, allerdings glaube ich das dich das überfordern würde.

                    Reines HTML wäre jedenfalls zu statisch und HTTP ist ohne eine Scriptsprache äusserst flüchtig. Neuladen vom Browser aus holt das Dokument erneut im Urzustand.

                    Schubser:
                    im document ready: cookie lesen. vorhanden? zeige diesen Tab, ansonsten tab 1 (würde eventuell auf id's setzen, die lassen sich einfacher finden)
                    im code wo das Tab gewechselt wird das cookie speichern.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Cookie setzen?

                      Ich resigniere!

                      Ist nicht böse gemeint. Bin ja dankbar für jeden Rat.

                      Kommentar


                      • #12
                        Local storage wäre auch ein Stichwort, allerdings glaube ich das dich das überfordern würde.
                        Wieso, ist doch eigentlich sehr simpel?

                        Code:
                        localStorage.setItem("key", "value");
                        
                        var value = localStorage.getItem("key");

                        Kommentar


                        • #13
                          Das ist jetzt wikrlich nicht böse gemeint, aber

                          -kann ich das jetzt einfach kopieren?
                          -wo genau muss ich das einfügen?
                          -muss ich noch etwas in meinem html-Code ändern?

                          Kommentar


                          • #14
                            Wow. Ich fürchte dir fehlen zu viele signifikante Grundlagen.

                            Und nein - du kannst das nicht kopieren.

                            Kommentar


                            • #15
                              Zitat von chinthya Beitrag anzeigen
                              Cookie setzen?

                              Ich resigniere!

                              Ist nicht böse gemeint. Bin ja dankbar für jeden Rat.
                              Ist jetzt auch nicht bös gemeint, aber "ich resigniere" und "ich bin für jeden Rat dankbar" klingen widersprüchlich. Der Rat ist "Lies dich ein, mach dich schlau", du hast gute Hinweise bekommen, wie es lösbar ist und mit welchen Mitteln. Bitte erwarte nicht von uns, das wir dir den Code dafür hier hinschreiben.
                              Wenn du aber selber mit einem Ansatz aufwarten kannst, darüber lässt sich diskutieren...
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X