【问题标题】:window.scroll event fires twice when implemeting scrollspy实现 scrollspy 时 window.scroll 事件触发两次
【发布时间】:2014-04-09 06:35:42
【问题描述】:

我已经像这样实现了scrollspy

http://jsfiddle.net/L4Gpq/3/

我的问题是当我点击任何链接时 window.scroll 事件命中两次。无论如何我可以停止第二个事件。

$(window).scroll(function() {   
    alert('Scroll Happened')
});

【问题讨论】:

    标签: jquery scroll scrollspy


    【解决方案1】:

    这是因为在您的 click() 函数中,您还调用了:

    scrollTop: $('#'+id).offset().top
    

    ...这将使窗口内的滚动动画。如果您可以向我们提供有关您的问题以及您想要达到的目标的更多详细信息,我们可以提出解决此问题的方法。

    【讨论】:

    • 我更新了小提琴jsfiddle.net/L4Gpq/4。像这样,当您单击我们的故事时,活动链接不会改变,因为没有太多空间可以移动和活动链接 if($(this).scrollTop() >= myArray[i]){ $('nav a' ).eq(i).addClass('active'); }。每当我处理这种情况时,我都会明确设置活动链接。因为滚动它会激活链接并基于滚动,链接被重置为主页(如小提琴)
    • @Hsakarp - 我了解您现在想要实现的目标(我希望!)。所以基本上,据我了解,一旦我点击“我们的故事”,您需要该链接才能激活。但不幸的是,'Home' div 仍然可见,因为它太大了。因此,您需要添加一个setTimeout 来等待动画完成并激活链接。我会做一个小提琴并为你更新我的答案。
    • 你的小提琴似乎非常有问题。除了scrollspy,您是否有机会接受其他解决方案?我在我的项目中使用了更好的方法,效果很好。
    • 是的,除了滚动间谍之外,我还可以使用。但我确实想知道 settime out 是如何工作的。
    • 你能给我提供一个可行的例子,所以当我点击“我的故事”时,它会转到那个 div 吗?如果您可以给我,而无需将活动课程应用于链接,我可以从那里为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2013-03-28
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多