如何在页面上使用锚点和菜单活动样式禁用和恢复jQuery路点

时间:2012-10-08 22:10:27

标签: jquery jquery-waypoints

我有一个页面使用jQuery waypoints插件,以及scrollTo插件,以实现一个粘性标题等(这里的教程:http://webdesign.tutsplus.com/tutorials/javascript-tutorials/create-使用粘性导航集管-jquery的航路点/).

我的一切都运行良好,但我遇到了你可以在子菜单上看到的行为 - 当点击页面下方对应div的链接时,页面会根据需要滚动到div和菜单更新具有'选定'类风格。但是因为页面滚动经过其他div,所以当页面滚动过去时,菜单会动画显示每个活动菜单项。我希望能够删除该功能,然后在页面导航到相应的div时立即将其恢复,以便移除此动画活动菜单链接的闪光。您可以在这里看到我在说什么(在子菜单中,如果您点击任何链接,如班车司机或接待员等)。

http://pinnacleahs.com/?page_id=8

我知道在waypoints插件中有一个remove()方法,但我不知道如何恢复它。此外,也许有另一种方法可以达到同样的目的。

我的功能如下:

$(function() {
// Do our DOM lookups beforehand
var nav_container = $(".navContainer");
var nav = $(".navStickyHolder");
nav_container.waypoint({
handler: function(event, direction) {
nav.toggleClass('sticky', direction=='down');
if (direction == 'down'){
nav_container.css({ 'height':nav.outerHeight() });
} else  { 
 nav_container.css({ 'height':'auto' });
} 
},
offset: 177
});

var sections = $(".servicePanel");
 var navigation_links = $(".servicesNavigation li a");
 sections.waypoint({
    handler: function(event, direction) {
    var active_section;
    active_section = $(this);
    if (direction === "up") active_section = active_section.prev();

        var active_link = $('.servicesNavigation li a[href="#' +  active_section.attr("id") + '"]');
        navigation_links.removeClass("selected");
        active_link.addClass("selected");

    }, offset: 295
})



navigation_links.click( function(event) {

        $.scrollTo(
        $(this).attr("href"),
        {
            duration: 300,
            offset: { 'left':0, 'top': -240 }
        }
    );

    navigation_links.removeClass("selected");
    $(this).addClass("selected");

        });
        });

1 个答案:

答案 0 :(得分:1)

您是否使用here的最新版本的航点? 您需要将航点选项“连续”定义为“假”

例如:

 $('.div')
  .waypoint(function(direction){
    if (direction === 'down') {
      do stuff
    } //endif
    },{
        offset: '10px',
        continuous: false
  })
  .waypoint(function(direction){
    if (direction === 'up') {
     do stuff
    } //endif
    },{
       offset: '10px',
        continuous: false
    });
});