【Jquery mobile】动态加载ListView 转
动态增加列表项是一个基本的功能,今天测试了一下。先贴下效果图:

点击“更多。。。”,就会增加列表项。
代码如下:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Page Title</title>
- <meta charset="GBK" />
- <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
- <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
- <script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
- <script>
- $(function() {
- $("#more").live("click", function() {
- var i = 0;
- for( i = 0; i <= 3; i++) {
- var list = $("<li><a href='http://blog.csdn.net/actual_'>新增列表项" + i + "</a></li>");
- $("#list").append(list).find("li:last").hide();
- $('ul').listview('refresh');
- $("#list").find("li:last").slideDown(300);
- }
- });
- });
- </script>
- </head>
- <body>
- <div data-role="page">
- <div data-role="header">
- <h1>maria</h1>
- </div>
- <!-- /header -->
- <div data-role="content">
- <ul data-role="listview" id="list" data-inset="true">
- <li>
- <a href="#">maria</a>
- </li>
- </ul>
- </div>
- <!-- /content -->
- <div data-role="footer" class="ui-bar">
- <a href="#" data-role="button" id="more" >更多...</a>
- </div>
- <!-- /footer -->
- </div>
- <!-- /page -->
- </body>
- </html>
以下转自网络:
前言:
用智能手机和平板电脑上网看微博、文章、小说时,手指往上滑动页面,经常看到下面有“正在加载,请稍后...”。 公司移动运用这块由我来搞,也有这个方面的运用需求,所以我也做了一个类似的异步加载版面的例子。
好处:
只有在用户手指滑动屏幕时才加载下一个版面的数据,一方面可以为用户节省流量;另一方面改善了第一次加载时的响应速度。
名词注解
JQuery Mobile: 它是一个为移动设备浏览器写的一个开源js框架,官方描述:
- jQuery Mobile: Touch-Optimized Web Framework for Smartphones & Tablets
- A unified user interface system across all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. Its lightweight code is built with progressive enhancement, and has a flexible, easily themeable design.
官方链接:
http://jquerymobile.com/
版面:
在IPAD上的safari浏览器,页面列表的内容如果很长的话,需要用手指向上滑动屏幕来查看下面的列表数据,一个屏幕就是一个版面啦
,当然这个不是严格意义上的版面。
本文要解决的问题:
异步加载列表内容,就是说, 刚进入页面时,加载大概两个版面的数据,然后手指向上滑动屏幕,如果手指触摸点还没有进入第二个版面则不会加载第三个版面的列表数据,当手指触摸点在第三个版面时,在页面的最下方显示“正在加载,请稍后...”,并调用jquery的ajax异步请求方法,来加载第四个版面的数据,加载完成后会移除“正在加载,请稍后...”的提示文字。
需要考虑的问题:
1、如何确定列表的版面个数?
不需要。
2、如何确定每个版面显示的记录条数?
因为列表页面的url是在后台配置的,不能将pageSize写死在URL里。而在js里计算出的pageSize是不能够作为这个URL的参数,struts2的action调用时,如果没有找到pageSize这个参数值,则默认pageSize=15,所以呢,第一次进入列表页面时,pageSize只能是15。也就是说列表页面只显示15条记录,这个在7寸的三星TP-1000平板及小于7寸的屏幕上还行。估计在大屏幕的IPAD上有点少,到时候具体考虑一下怎么定这个数。
js中计算的pageSize在AJAX异步加载版面时会作为请求的参数。比如IPAD2屏幕每个版面适合显示20条记录,则以后每个版面加载时都取20条出来。
3、如何确定是否要加载下一个版面?
手指解决进入了已经加载的版面的最后一个时,就要加载下一个版面,如何确定触点在最后一个版面呢?经过分析,可以给<li>指定id。然后就可以获取<li>元素的序号,来判断触点是在哪个版面。
<div id="mainPage" data-role="page">
<div data-role="header" data-position="inline" data-theme="b">
<h1>中间计量审批列表</h1>
<a class="ui-btn-right" href="javascript:goDesktop();" data-role="button" data-icon="back">返回桌面</a>
</div> <div data-role="content">
<ww:if test="list.size>0">
<ul id="list" data-role="listview">
<ww:iterator value="list" status="status">
<li id="li<ww:property value="#status.index" />"><a href="javascript:toAudit('<ww:property value='id'/>')"><ww:property value="topic" />(<ww:property value="startTime" />)</a></li>
</ww:iterator>
</ul>
</ww:if>
<ww:if test="list.size==0">
不存在任何数据.
</ww:if>
</div>
</div>
- /** 计算手指滑动时起始点处的DOM元素的序号 */
- function getScrollPosition(event){
- var target = $(event.target);
- while(target.attr("id")==undefined){
- target = target.parent();
- }
- //手指滑动触点的<li>元素的ID
- var targetId = target.attr('id');
- //手指滑动触点的<li>元素的序号
- var position;
- //手指滑动触点的Tag
- var targetTag = "li";
- if(targetId!=undefined && targetId.indexOf(targetTag)==0){
- position = targetId.substring(targetTag.le
【Jquery mobile】动态加载ListView 转的更多相关文章
- jquery mobile动态加载数据后无法渲染
引自:http://blog.sina.com.cn/s/blog_025270e901016lst.html jquery mobile在动态添加html之后无法渲染控件,无法转换控件的办法! jq ...
- jquery mobile 动态加载标签时,无法正常展示样式
原因 在chrome中审查元素,发现其增加了很多没有直接写在页面上的标签和样式.页面标签首先经过jquery.mobile-1.4.5.min.js的处理,添加了许多标签,然后再用css布局 解决方案 ...
- jquery:为动态加载的元素添加点击事件
jquery:为动态加载的元素添加点击事件 最近在做项目的时候遇到了这样一个问题,给用ajax动态加载出来的内容添加点击事件,但是怎么都触发不了,经过查询试验总结出正确的写法 在jquery1.7之前 ...
- jQuery EasyUI-DataGrid动态加载表头
项目总结—jQuery EasyUI-DataGrid动态加载表头 目录(?)[-] 概要 实现 总结 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid ...
- 项目总结—jQuery EasyUI-DataGrid动态加载表头
http://blog.csdn.net/zwk626542417/article/details/19248747 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGri ...
- jquery getScript动态加载JS方法改进详解[转载]
转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript( ...
- js与jquery的动态加载脚本文件
jquery动态加载 jQuery.getScript(url,[callback]) js动态加载 function loadJs(name) { document.write('<scrip ...
- Android动态加载ListView中的Item
我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点 ...
- jquery getScript动态加载JS方法改进详解
有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...
随机推荐
- CF 600B Queries about less or equal elements --- 二分查找
CF 600B 题目大意:给定n,m,数组a(n个数),数组b(m个数),对每一个数组b中的元素,求数组a中小于等于数组该元素的个数. 解题思路:对数组a进行排序,然后对每一个元素b[i],在数组a中 ...
- 《C与指针》第三章练习
本章问题 1.What is the range for characters and the various integer types on your machine? (在你的机器上,字符型和整 ...
- oracle 查询数据库表空间大小和剩余空间
dba_data_files:数据库数据文件信息表.可以统计表空间大小(总空间大小). dba_free_space:可以统计剩余表空间大小. 增加表空间即向表空间增加数据文件,表空间大小就是数据文件 ...
- 使用as3控制动画的播放与暂停
1.需要两个按钮元件 2.在属性面板为两个按钮元件分别命名为pausebutton与playButton 3.代码 stop(); pausebutton.visible = false; playB ...
- jQuery的attr与prop,attribute和property区别
jQuery1.6中新添加了一个prop方法,看起来和用起来都和attr方法一样,这两个方法有什么区别呢?这要从HTMl 的attribute与property区别说起,attr与prop正是这两个东 ...
- 各种数据分析图demo
极地蛛网图:http://www.hcharts.cn/demo/index.php?p=61 各种数据分析图demo: http://www.hcharts.cn/demo/index.php?p= ...
- Eclipse下新建Maven项目、自动打依赖jar包
当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...
- SpringMVC处理静态资源
若将DispatcheServlet请求映射设置为/,则SpringMvc将捕获WEB容器的所有请求,包括静态资源的请求,SpringMvc会将它们当成一个普通的请求处理,那么将会出现因找不到对应的处 ...
- linux下的find文件查找命令与grep文件内容查找命令
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...
- php include require
includ和require都是把其他页面加载当前页面,不过不同的是,require如果没有找到,或者所包含的页面里面有错误就不会往下执行了 <?php include 'form.php'; ...