您好我有2个功能,首先检测向上/向下的滚动方向,然后启动其他功能(自动滚动)。如何在调用后强制停止.scroll()函数?现在它看起来像无限循环...
var pageScroll = function(){
var iScrollPos = 0;
$(window).scroll(function(e){
var iCurScrollPos = $(this).scrollTop();
if (iCurScrollPos > iScrollPos) {
App.scrollto((currentPage+1));
} else {
App.scrollto((currentPage-1));
}
iScrollPos = iCurScrollPos;
});
}
并调用函数
scrollto: function(page){
var section_offset = $('section[data-page="'+page+'"]').offset().top;
$('html, body').animate({ scrollTop: section_offset }, 'slow',function(){
$('html, body').stop();
currentPage = page;
console.log(currentPage);
});
}
和控制台日志屏幕http://prntscr.com/4m493q(无限循环)
答案 0 :(得分:1)
这段代码在很多浏览器上都适合我。
$(function() {
var scrollTop = $(window).scrollTop();
$(window).scroll(function() {
// this bit stops the page from being scrolled
if ( * * * insert check * * * )
$(window).scrollTop(scrollTop);
// update the new y value
scrollTop = $(window).scrollTop();
)
};
});

答案 1 :(得分:1)
使用$(window).unbind('scroll');
:http://api.jquery.com/unbind/
答案 2 :(得分:0)
尝试一下:
HTMLElement.prototype.stopScroll = function(){
this.scroll({top:this.scrollTop+1});
}
完成后,假设您正在滚动
:document.getElementByTagName('body')[0].stopScroll();
或使用JQuery:
$('body')[0].stopScroll();
答案 3 :(得分:-1)
您可以在自定义滚动功能结束时尝试return false
,或在调用自定义滚动功能之前调用preventDefault()
。
答案 4 :(得分:-1)
您在滚动回调处理程序中定义为e
的参数是event
对象。
$(window).scroll(function(e){
Jquery上的每个事件都有一个名为preventDefault()
的方法,根据Jquery Docs:
说明:如果调用此方法,则不会触发事件的默认操作。
因此,调用此方法将保持滚动窗口:
$(window).scroll(function(e){
e.preventDefault();