运行函数,禁用滚动,但在回调时启用
Run function, disable scroll, but enable on callback
我想制作一个无限滚动页面,但我遇到了一个问题。
我的loadElements
与$.get
一起工作,如下所示:
loadElements: function() {
// fades out page
$.get(//..).done(function() {// fades in page});
}
和滚动:
$(window).scroll(function() {
Functions.loadElements();
});
我想要的是在滚动时运行Functions.loadElements();
一次,等待// fades in page
,然后重新启用滚动。我试过bind/unbind
,但没有成功。我怎样才能做到这一点?
编辑:
我试着这样使用bind
和unbind
:
$(window).scroll(function() {
Functions.loadElements();
$(window).unbind('scroll');
}
在loadElements
:中
loadElements: function() {
// fades out page
$.get(//..).done(function() {// fades in page; $(window).bind('scroll'); });
}
但它没有起作用。
我不能给你一个确切的解决方案。但是试试这样的东西。您可以使用globle变量来维护状态。
var isLoading = false;
$(window).scroll(function(e) {
if( !isLoading )
{
Functions.loadElements();
isLoading = true;
}
e.preventDefault();
}
loadElements: function() {
// fades out page
$.get(//..).done(function() {// fades in page; isLoading = false; });
}
也许不要重新绑定包含逻辑的滚动函数,而是尝试绑定一个"禁用"滚动的函数,然后在内容准备好再次滚动后删除此函数。您可以为这个使用jquery命名空间事件
尝试
$(window).scroll(function() {
Functions.loadElements();
$(window).bind('scroll.StopScroll', function (e) {
e.preventDefault(); e.stopImmediatePropagation();
});
}
然后在.done
中解除它的绑定
$(window).unbind('scroll.StopScroll');
我会用get
promise
var waiting;
$(window).scroll(function(e) {
if(waiting){
e.preventDefault();
return;
}
Functions.loadElements().then(function(){
waiting = false;
});
waiting = true;
});
并从loadElements
返回get
承诺
loadElements: function() {
// fades out page
return $.get(...).done(function() {...});
}
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 在Golang回调函数中启用CORS
- 当通过Ajax成功回调更新可观察数组时,启用绑定中断
- PhoneGap 3.0.0 Tanelih 蓝牙插件在 Android 上已启用错误回调不起作用
- 运行函数,禁用滚动,但在回调时启用