首页 > 代码库 > jquery 下拉自动加载
jquery 下拉自动加载
function Map() //自定义map{ this.container = new Object();}Map.prototype.put = function(key, value){ this.container[key] = value;};Map.prototype.get = function(key){ return this.container[key];};Map.prototype.keySet = function() { var keyset = new Array(); var count = 0; for (var key in this.container) { // 跳过object的extend函数 if (key == ‘extend‘) { continue; } keyset[count] = key; count++; } return keyset;};/** * 保存所有刷新器,键是containerId + "_loadBtn" */pullToRefreshers = new Map();/** * 自动加载 */var PullToRefresh = function(containerId, getDataFunc, loadOnInit, manualLoad) //下拉调用{ this.containerId = containerId; //为tag名字 this.getDataFunc = getDataFunc; //获取下一页的函数
this.loadOnInit = loadOnInit; //loadOnInit为true时,自动加载完将触发scroll事件,需要忽略 this.firstLoad = true; /** *正在加载 */ this.loading = false; pullToRefreshers.put(containerId + "_loadBtn", this); this.onScroll = function() { if(pullToRefreshers.get(containerId + "_loadBtn").loadOnInit && pullToRefreshers.get(containerId + "_loadBtn").firstLoad) { pullToRefreshers.get(containerId + "_loadBtn").firstLoad = false; return; } if(!pullToRefreshers.get(containerId + "_loadBtn").loading) { //兼容各浏览器 var clientHeight = document.documentElement.clientHeight; if(clientHeight == 0) { clientHeight += document.body.clientHeight; } var scrollTop = document.documentElement.scrollTop; if(scrollTop == 0) { scrollTop += document.body.scrollTop; } var scrollHeight = document.documentElement.scrollHeight; if(scrollHeight == 0) { scrollHeight += document.body.scrollHeight; } //滚动到底部 if(clientHeight+scrollTop>=scrollHeight) { pullToRefreshers.get(containerId + "_loadBtn").loadNextPage(); } } }; this.loadNextPage = function () { loading = true; var data =http://www.mamicode.com/ getDataFunc(); if(manualLoad) { $("#" + containerId + "_loadBtn").remove(); } $("#" + containerId).append(data); if(manualLoad) { var loadBtn = "<div id=‘" + containerId + "_loadBtn‘" + " class=‘col-xs-12‘ style=‘cursor:pointer; text-align:center;‘ onclick=‘pullToRefreshers.get(this.id).loadNextPage()‘>加载更多...</div>"; $("#" + containerId).append(loadBtn); } loading = false; }; if(manualLoad) { var loadBtn = "<div id=‘" + containerId + "_loadBtn‘" + " class=‘col-xs-12‘ style=‘cursor:pointer; text-align:center;‘ onclick=‘pullToRefreshers.get(this.id).loadNextPage()‘>加载更多...</div>"; $("#" + containerId).append(loadBtn); } else { window.onscroll = this.onScroll; } if(loadOnInit) { this.loadNextPage(); }};
goodsList.tag
<%@ tag body-content="empty" pageEncoding="UTF-8" isELIgnored="false"%> <%@ taglib prefix="s" uri="/struts-tags"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%-- goodsList是静态限时的商品列表,与nextPageFunc不能同时存在 --%><%@ attribute name="goodsList" required="false" rtexprvalue="http://www.mamicode.com/true" type="java.util.List"%> <%-- nextPageFunc是动态加载商品列表时调用的action名称,与goodsList不可同时存在 --%><%@ attribute name="nextPageFunc" required="false" rtexprvalue="http://www.mamicode.com/false" type="java.lang.String"%> <%-- loadOnInit为"true"时,打开页面会自动请求一次数据 --%><%@ attribute name="loadOnInit" required="false" rtexprvalue="http://www.mamicode.com/false" type="java.lang.String"%> <%-- manualLoad为"true"时,滚动页面不会自动加载数据,需要点击加载更多按钮 --%><%@ attribute name="manualLoad" required="false" rtexprvalue="http://www.mamicode.com/false" type="java.lang.String"%> <%-- 生成nextPageFunc所需参数的js方法名 --%><%@ attribute name="paramFunc" required="false" rtexprvalue="http://www.mamicode.com/false" type="java.lang.String"%> <script type="text/javascript">$(function(){ /* document.getElementById("centerButton").style.top=(document.documentElement.scrollTop)+"px"; document.getElementById("centerButton").style.left=(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("centerButton").offsetWidth)+"px"; */ if("${nextPageFunc}" != "") { new PullToRefresh("goodsList", nextPage, ${true == loadOnInit}, ${true == manualLoad}); }});var currentPage = 1;var numPerPage = 10;<c:if test="${not empty paramFunc}">var customParam = ${paramFunc}();</c:if>function nextPage(){ <c:if test="${not empty paramFunc}"> var param = customParam; </c:if> <c:if test="${empty paramFunc}"> var param = {}; </c:if> param["currentPage"] = currentPage; param["numPerPage"] = numPerPage; var data = http://www.mamicode.com/eval(invokeJava("${nextPageFunc}", param)); var dom = ""; for(var o in data) { dom += ‘<div class="col-xs-6" onclick="buy(‘ + data[o].goodsId + ‘)" style="cursor:pointer"><ul class="ul2"><img src="http://www.mamicode.com/‘ + data[o].picUrl + ‘"/><br>‘ +‘<li style="color: #b7b7b7; font-size: 12px;">‘+data[o].storeName + ‘</li>‘ +‘<li style="color: #929292; font-size: 14px;">‘+ data[o].goodsName + ‘</li>‘ + ‘<li style="color: #ef3646; font-size: 15px;">‘+data[o].discount + ‘</li>‘ +‘<li style="color: #959595; font-size: 12px;">‘+data[o].price + ‘</li>‘ + ‘<li><i class="glyphicon glyphicon-shopping-cart"></i><p>购买</p></li>‘ +‘</ul>‘+‘<br></div>‘ /* dom += ‘<div class="col-xs-6" onclick="buy(‘ + data[o].goodsId + ‘)" style="cursor:pointer"><img src="http://www.mamicode.com/‘ + data[o].picUrl + ‘"/><br>‘ + data[o].goodsName + ‘<br></div>‘ */ } currentPage++; /* dom + = ‘<div name="centerButton" id="centerButton"><i class="glyphicon glyphicon-th-large"></i></div>‘ */ return dom;}function buy(goodsId){ document.location = "/UshequMobile/getGoodsInfo_Goods?goodsId=" + goodsId; }</script><div id="goodsList"> <c:forEach var="goods" items="${goodsList}" varStatus="status"> <div class="col-xs-6" onclick="buy(${goods.goodsId})" style="cursor:pointer"> <img src="http://www.mamicode.com/${goods.picUrl}"/><br> ${goods.goodsName}<br> </div> </c:forEach></div>
页面调用
1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <%@taglib prefix="hs" tagdir="/WEB-INF/tags" %> 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4 <!DOCTYPE html> 5 <html lang="zh-cn"> 6 <head> 7 <title>热销商品</title> 8 <script type="text/javascript"> 9 $(function()10 { 11 $("#flag").val( "${flag}");12 }); 13 14 function getParam()15 {16 var data=http://www.mamicode.com/{};17 data["flag"] = "${flag}";18 19 return data;20 }21 22 </script>23 </head>24 <body>25 <div class="container">26 <div class="row">27 <div class="col-xs-12" id="refreshContainer">29 <hs:goodsList nextPageFunc="getHotSellGoodsAjax" paramFunc="getParam" loadOnInit="true" manualLoad="false"/>30 </div>31 32 </div>33 </div>34 </body>35 </html>36
jquery 下拉自动加载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。