2017-01-02 8 views
4

Freunde zu verankern,jQuery Rolle mit Ausnahme

ich einzelne Seite Website baue, die die jQuery-Funktion verwendet, um einen Anker zu bewegen, wenn das Menü Link ausgewählt wird. Hier ist der Code ich benutze:

(function($) { 
    var jump = function(e) 
    { 
     if (e) { 
      e.preventDefault(); 
      var target = $(this).attr("href"); 
     } else { 
      var target = location.hash; 
     } 
     $('html,body').animate(
     { 
      scrollTop: $(target).offset().top - 150 
     }, 1500, 'swing', function() 
     { 
      location.hash = target - 150; 
     }); 
    } 
    $('html, body').hide() 
    $(document).ready(function() 
    { 
     $('a[href^=#]').bind("click", jump); 
     if (location.hash) { 
      setTimeout(function() { 
       $('html, body').scrollTop(0).show() 
       jump() 
      }, 0); 
     } else { 
      $('html, body').show() 
     } 
    }); 
})(jQuery) 

Nun ist diese Funktion für alle html genannt wird ‚a‘ Elemente mit ‚href‘. Ich brauche die Funktion oben zu ändern, so wäre es #nav-menu mit dem Anker außer dieser für alle definierten Links funktionieren:

<a href="#nav-menu" id="toggle"><span></span></a> 

Irgendwelche Vorschläge sehr geschätzt werden würde.

+5

'$ ('a [href^= #]: nicht (#toggle)'). Bind ("Klick", Sprung);' Verwenden Sie auch '.on()' – Satpal

+0

@Satpal Ich bin mir nicht sicher, was Sie im Sinn hatten, indem Sie "auch" .on() '" verwenden. Der erste Teil deines Kommentars hat mein Problem behoben. Vielen Dank. – user2963789

+1

Da '.bind()' zu Gunsten von ['.on()'] (http://api.jquery.com/on/) veraltet ist, sollte auch _.on() '_ verwendet werden empfehlen die Verwendung in der Methode '.on()' – Satpal

Antwort

0

JQuery bieten eine Reihe von integrierten Filtern, die Sie in Ihrem Fall können Sie verwenden:

  • die in eingebautem Filter nicht() wie folgt: -

    $("a[href^=#]:not([href=#nav-menu])").click(jump); 
    
  • Sie bauen Business-Filter besitzen, wie folgend: -

    $("a[href^=#]").filter(function() { 
        //you may here do whatever filteration business you want 
        return $(this).attr("href")!='#nav-menu'; 
    }).click(jump); 
    

Einfaches Beispiel Here