当用户手机 scroll 的时候,自动加载分页中的内容。如何让下面这一段代码更优美
javascript
//网址:http://xxx.com/game/top-hot/p/1/ //需要先引入 jquery.min.js 库 var pageAutoLoad = []; pageAutoLoad.page = 1 || 1; pageAutoLoad.pageTotal = 2 || 1; pageAutoLoad.nextUrl = "\/game\/top-hot\/p\/PAGE\/" || ''; pageAutoLoad.selector = { content: '.list_game ul', page: '.page_load' }
javascript
//全局公用部分 //文件位置 /public/js/init.js $(function(){ if (typeof pageAutoLoad != 'undefined') { $(window).scroll(function () { loadData(); }); } }); var totalheight = 0; function loadData() { totalheight = parseFloat($(window).height()) + parseFloat($(window).scrollTop()); if ($(document).height() <= totalheight) { if (pageAutoLoad.page > pageAutoLoad.pageTotal) { return; } var nextPage = pageAutoLoad.page + 1; var nextUrl = pageAutoLoad.nextUrl.replace('PAGE', nextPage); $.ajax({ url: nextUrl, type: 'GET', dataType: 'html', error: function () { $('.more-link').trigger('click'); }, success: function (html) { var htmlContent = $(html).find(pageAutoLoad.selector.content).html(); var htmlPage = $(html).find(pageAutoLoad.selector.page).html(); $(pageAutoLoad.selector.content).append(htmlContent); $(pageAutoLoad.selector.page).html(htmlPage); pageAutoLoad.page = nextPage; } }); } }
建议你还是用一个类来实现这个组件,参数设计的话可以参考以下
...
不喜欢回调的方式可以基于jquery的自定义事件来解决。
写法大致就是
$.fn.customName
=function (options) {...}
然后调用的时候:
$('selector').customName(options)
帮你把格式调了下:
重構如下:
主要是提取邏輯並抽象。