Scrolling jQuery
Scrolling jQuery
我有一些代码,应该在每次以某种方式触发滚动时滚动一页高。我希望它只滚动一个高度,并"暂停"触发器,直到滚动完成。然而,我的脚本并没有停止,相反,它会立即向下滚动。向上滚动似乎效果更好。。。
这是我的脚本:
var lastScroll = 0;
var scrollPos = 0;
var blockScroll = 0;
$(window).scroll(function() {
var scroll = $(this).scrollTop();
if(blockScroll == 0) {
blockScroll = 1;
if(scroll > lastScroll){
// Down
scrollPos++;
console.log(scrollPos+"-"+blockScroll);
$("html, body").animate({scrollTop:$(window).height()*scrollPos}, 'slow', function() {
blockScroll = 0;
});
} else {
// Up
scrollPos--;
console.log(scrollPos);
$("html, body").animate({scrollTop:$(window).height()*scrollPos}, 'slow', function() {
blockScroll = 0;
});
}
}
lastScroll = scroll;
});
blockScroll是指在滚动事件出现时设置,而在滚动动画停止时取消设置。作为一把锁。我不相信这是我想要的方式。。。有人能看出这个明显有什么问题吗?jQuery是异步的,我是不是遇到了麻烦?
似乎animate
本身正在启动滚动事件,因此当它完成时,它将启动最后一个滚动事件,从而重新启动进程。
在回调中添加一个小的超时似乎解决了问题:
setTimeout(function () {blockScroll = 0;}, 50)
http://jsfiddle.net/qch787yq/1/
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jQuery匹配JSON对象的部分文本
- Jquery POST未填充数组
- JQuery使计数器每次更改时都会增加
- 如何在Angular2中使用jQuery插件
- 提高JQuery的性能
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JQuery合并了keyup和focusout两个函数
- 如何使用jQuery选择下拉列表的值
- 将PHP变量传递给jQuery时遇到问题
- jQuery UI自动完成突然停止工作
- 剑道网格jQuery动画()问题
- Scrolling jQuery
- jquery.mousewheel.js iPhone scrolling
- jquery scrollbox scrolling stuck