scrollPagination重复加载问题的解决

相信使用过scrollPagination的同学都会发现,这个插件在使用的时候会出现重复加载的问题,当然我也遇到这个问题,那问题出在哪儿呢??一开始就上网找答案啊,找出了原因,原来是因为它发送request是基于mayLoadContent = $(target).scrollTop()+opts.heightOffset >= $(document).height() - $(target).height();,如果mayLoadContent 为true,则请求,它并没有对上一次的请求是否完成进行判断,那这个就不好办了呀,和我们想的不一样。看网上有同学说加一个lock机制,然后我就自己试了一下,果断的,立马就有效果了,没有出现重复加载。下面我把我修改的那段加锁的代码给大家贴出来,有需要的同学可以拿出去直接用,当然可能会出现问题。希望大家多多指正,本人只是个小菜鸟。 首先是对scrollpagination.js的修改,主要是添加了lock参数,根据情况给其赋值,并对它的值进行判断。然后只要在页面中的js调用的时候添加lock参数就可以了。

$.fn.scrollPagination.loadContent = function(obj, opts){
	
	 var target = opts.scrollTarget;
	 var mayLoadContent = $(target).scrollTop()+opts.heightOffset >= $(document).height() - $(target).height();
	 //根据mayLoadContent 和 lock两个参数进行判断
	 if (mayLoadContent && opts.lock){
		 if (opts.beforeLoad != null){
			opts.beforeLoad(); 
		 }
		 //加载数据的时候把lock设为false
		 opts.lock = false;
		 $(obj).children().attr('rel', 'loaded');
		 $.ajax({
			  type: 'POST',
			  url: opts.contentPage,
			  data: opts.contentData,
			  contentType: 'application/json',
			  success: function(data){
				 //加载成功后把lock设为true,可以进行下一次request
				opts.lock = true;
				$(obj).append(data); 
				var objectsRendered = $(obj).children('[rel!=loaded]');
				
				if (opts.afterLoad != null){
					opts.afterLoad(objectsRendered);	
				}
				//			
			  },
			  dataType: 'html'
		 });
	 }
	 
  };
  
  
	
 $.fn.scrollPagination.defaults = {
      	 'contentPage' : null,
     	 'contentData' : {},
		 'beforeLoad': null,
		 'afterLoad': null	,
		 'scrollTarget': null,
		 'heightOffset': 0,
		 //添加lock机制,如果数据加载完了,则lock为true,可以加载下一组数据,如果数据没有加载完,则lock为false,等到数据加载完成了为true。
		 'lock':true
 };	







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值