tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
330
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Lord-Knud Lord-Knud ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    18
    Hallo Gemeinde,
    ich habe folgendes Menü:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    ´function initMenu() {
      $('#menu ul').hide();
      $('#menu ul:first').show();
      $('#menu li a').click(
        function() {
          var checkElement = $(this).next();
          if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
            return false;
            }
          if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
            $('#menu ul:visible').slideUp('normal');
            checkElement.slideDown('normal');
            return false;
            }
          }
        );
      }
    $(document).ready(function() {initMenu();});

    Der Effekt ist, dass wenn man auf das Listenelement klickt, die darunterliegenden Unterlistenelement aufklappen.
    Jetzt möchte ich aber zusätzlich, dass wenn ich auf das Listenelement klicke, auch zu dem Anker gescrollt wird.

    Z. Bspl:

    HTML-Code:
    <li>
    			<a href="#comfort">Comfort Apartments</a>
    
    			<ul>
    				<li><a href="http://www.meineWebseite.de/atelier.html">Atelier Apartment</a></li>
    				<li><a href="http://www.meineWebseite.de">da Vinci Apartment</a></li>
    				<li><a href="http://www.meineWebseite.de/hardy.html">Hardy Apartment</a></li>
    			</ul>
    		</li>
    Hat jemand eine Idee, wie ich das verwirklichen kann?
    Danke
     

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Was hast du von der slide-Animation, wenn man ohnehin direkt runter scrollt? Nichts desto trotz, hier mal der Code. Habe deinen Code auch gleich mal komprimiert.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    function initMenu() {
        $('#menu').find('ul').hide().filter(':first').show().end().end().find('> li > a').click(
            function(e) {
                e.preventDefault();
                
                var checkElement = $(this).next();
                
                if(checkElement.is('ul:hidden')) {
                    $('#menu ul:visible').slideUp('normal');
                    checkElement.slideDown('normal');
                }
                
                //Zum Anker scrollen
                var hash = $(this).attr('href');
                
                if(/^#\w$/.test(hash)) {
                    var anchor = $(hash);
                    $(window).scrollTop( anchor.offset().top );
                }
                
            }
        );
    }
     

  3. #3
    Lord-Knud Lord-Knud ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    18
    Hallo CPoly,
    das Menü befindet sich in einem Layer, der mitsrollt, also "fixed" ist.

    Wenn ich deine Variante nehme, scrollt es zwar schön zum Anker, das Menü ist aber ständig offen.

    Wenn ich
    Code :
    1
    
    $(document).ready(function() {initMenu();});
    dazunehme, ist das Menü wieder geschlossen, scrollt aber nicht zum Anker.

    Hast du vielleicht noch ne Idee?
    Danke.
     

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Das document-ready muss weiterhin da sein. Irgendwie muss die Funktion ja aufgerufen werden.

    Ich hab meinen Code nochmal verändert, weil eigentlich scroll der Browser ja von selbst zum Anker, nur hast du das mit dem return false unterbunden.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    function initMenu() {
        $('#menu').find('ul').hide().filter(':first').show().end().end().find('> li > a').click(
            function(e) {
                var checkElement = $(this).next();
                
                if(checkElement.is(':visible')) {
                    e.preventDefault();
                    return false;
                }
                
                if(checkElement.is('ul:hidden')) {
                    $('#menu ul:visible').slideUp('normal');
                    checkElement.slideDown('normal');
                }
                
                return true;
            }
        );
    }
     
    $(document).ready(function() {initMenu();});
     

  5. #5
    Lord-Knud Lord-Knud ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    18
    So geht's
    Vielen Dank.
     

Ähnliche Themen

  1. Hife!!....Daten aus Dataset auslesen
    Von Trigoor2 im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 16.08.11, 15:40
  2. Robots modellieren, Hife...
    Von niesi im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 07.04.06, 16:20
  3. Director Hife
    Von kobo im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 05.08.05, 07:10
  4. Brauche Hife für Design
    Von son gohan im Forum CSS
    Antworten: 10
    Letzter Beitrag: 04.01.05, 21:53
  5. Hife bei Addition in JavaScript
    Von marcoman111 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.12.04, 11:37