/**
* @author wsf 滚动按需加载
*/
;
(function (w,$){
var jutil = null;//工具类
/**
* 滚动按需加载对象
*/
function demandLoader (){
this.startLoadFlag = {};//是否开始加载
this.allLoaded = false;//是否全部加载完成
//分批加载函数
this.batch = {
"fun1":this.loadCustTree,
"fun2":this.prevLoadActAndOpt,
"fun3":this.prevLoadActAndOpt
//等等
};
}
/**
* 原型对象
*/
demandLoader.prototype = {
constructor:demandLoader,//构造函数
//加载后台数据
getJson:function (url,param,callback,othargs){
var that = this;
$.getJSON(url,param,function (data){
callback.call(that,data,othargs);
});
},
//开始加载
startLoad:function(){
var scrolltop = arguments[0];//页面滚动高度
jutil = arguments[1];//jsUtil
if(typeof idxpos != "object"){
return false;
}
var catalog1 = idxpos.h2IdxPos;//一级目录位置
var catalog2 = idxpos.h3IdxPos;//二级目录位置
this.loadCataCommon(catalog1, scrolltop);//一级目录延迟加载
this.loadCataCommon(catalog2, scrolltop);//二级目录延迟加载
},
// 目录公共加载方法
loadCataCommon : function(catalog, scrolltop) {
for ( var i in catalog) {
var cl = catalog[i];// 目录
var text = cl.text;// 加载哪一部分
var catalogtop = cl.top;// 目录位置(父目录)
var difTop = scrolltop - catalogtop;// 高度差
if (difTop>0&&this.startLoadFlag[text] == undefined) {
var loadFn = this.batch[text];// 加载处理函数
if (jutil.isFunction(loadFn)) {
this.startLoadFlag[text] = "startload";// 开始加载
loadFn.call(this, text);
}
}
}
},
//加载客户关系树
loadCustTree:function (){
this.startLoadFlag[text] = "endload";//加载完成
this.endLoad();//加载结束
},
//加载收入信息
loadIncome:function (){
this.startLoadFlag[text] = "endload";//加载完成
this.endLoad();//加载结束
},
//预先加载活动,机会信息
prevLoadActAndOpt:function (text){
this.startLoadFlag[text] = "endload";//加载完成
this.endLoad();//加载结束
},
//加载地址信息
loadDz:function (text){
this.startLoadFlag[text] = "endload";//加载完成
this.endLoad();//加载结束
},
//结束加载
endLoad:function (){
$._initCatelogPos();//重新计算目录位置
this.allLoaded = true;
for(var catalotnm in this.batch){
this.allLoaded = this.allLoaded && (this.startLoadFlag[catalotnm] == "endload");
}
}
}
w.demandLoader = demandLoader;//外部调用入口
})(window,jQuery);
调用方式
/**
* 窗口滚动事件
*/
function winScroll(){
scrollTop = $(win).scrollTop();
if(!_demandLoader.allLoaded){
_demandLoader.custid = $("#custid").val();//当前客户id
//还没有加载过
_jsUtils.throttle(function (){
_demandLoader.startLoad.call(_demandLoader,scrollTop,_jsUtils);//开始按需加载
},110);
}
}
$(win).scroll(winScroll);//窗口滚动监听