2012-12-23 141 views
0

如何在两个y位置之间手动滚动时自动调整.scrollTo()(使用插件)? (if().scroll()内部的声明)jQuery如何在某个位置手动滚动时滚动到?

下面的代码看起来很简单。但是,滚动有点颠簸,当它自动滚动到内容时,滚动会停留在那里。仿佛它想要做两件事。

scrollToContent = function() { 
    $(document).stop(1, 1).scrollTo($('.content'), 750, { easing: 'easeInOutQuint' }); 
} 

$(window).scroll(function() { 
    if ($(this).scrollTop() <= $(this).height()) { 
     scrollToContent(); 
    } 
}); 
+1

看起来它试图做2件事情,因为它是_is_试图做2件事情。它试图在用户滚动时自动滚动。每次用户滚动时,动画都会停止并重新开始。听起来像你可能想要[禁用用户滚动](http://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily),而滚动自动发生。 –

+0

我试过了,但是如何检查用户是否在滚动?除了$(window).scroll()'?因为这样,我得到了同样的结果。 – fishbaitfood

回答

2

这太长了评论,所以我把它作为一个答案,而不是。 $(window).scroll()是您想用来检查用户是否滚动的方法。如果与scrollTo()插件混淆,请尝试设置标志。例如:

var scrolling = false; 

scrollToContent = function() { 
    scrolling = true; 

    // disable user scroll here 

    $(document).stop(1, 1).scrollTo($('.content'), 750, { easing: 'easeInOutQuint', onAfter: function() { 
    scrolling = false; 

    // reenable user scroll here 
    }}); 
} 

$(window).scroll(function() { 
    if ($(this).scrollTop() <= $(this).height() && !scrolling) { 
    scrollToContent(); 
    } 
}); 
+0

真棒,基督徒!这工作得很好。 – fishbaitfood