分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报

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

点击“更多。。。”,就会增加列表项。

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Page Title</title>
  5. <meta charset="GBK" />
  6. <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
  7. <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
  8. <script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
  9. <script>
  10. $(function() {
  11. $("#more").live("click", function() {
  12. var i = 0;
  13. for( i = 0; i <= 3; i++) {
  14. var list = $("<li><a href='http://blog.csdn.net/actual_'>新增列表项" + i + "</a></li>");
  15. $("#list").append(list).find("li:last").hide();
  16. $('ul').listview('refresh');
  17. $("#list").find("li:last").slideDown(300);
  18. }
  19. });
  20. });
  21. </script>
  22. </head>
  23. <body>
  24. <div data-role="page">
  25. <div data-role="header">
  26. <h1>maria</h1>
  27. </div>
  28. <!-- /header -->
  29. <div data-role="content">
  30. <ul data-role="listview" id="list" data-inset="true">
  31. <li>
  32. <a href="#">maria</a>
  33. </li>
  34. </ul>
  35. </div>
  36. <!-- /content -->
  37. <div data-role="footer" class="ui-bar">
  38. <a href="#" data-role="button" id="more" >更多...</a>
  39. </div>
  40. <!-- /footer -->
  41. </div>
  42. <!-- /page -->
  43. </body>
  44. </html>

以下转自网络:

前言: 
    用智能手机和平板电脑上网看微博、文章、小说时,手指往上滑动页面,经常看到下面有“正在加载,请稍后...”。 公司移动运用这块由我来搞,也有这个方面的运用需求,所以我也做了一个类似的异步加载版面的例子。

好处: 
    只有在用户手指滑动屏幕时才加载下一个版面的数据,一方面可以为用户节省流量;另一方面改善了第一次加载时的响应速度。

名词注解 
JQuery Mobile: 它是一个为移动设备浏览器写的一个开源js框架,官方描述:

  1. jQuery Mobile: Touch-Optimized Web Framework for Smartphones & Tablets
  2. 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>
  1. /** 计算手指滑动时起始点处的DOM元素的序号 */
  2. function getScrollPosition(event){
  3. var target = $(event.target);
  4. while(target.attr("id")==undefined){
  5. target = target.parent();
  6. }
  7. //手指滑动触点的<li>元素的ID
  8. var targetId = target.attr('id');
  9. //手指滑动触点的<li>元素的序号
  10. var position;
  11. //手指滑动触点的Tag
  12. var targetTag = "li";
  13. if(targetId!=undefined && targetId.indexOf(targetTag)==0){
  14. position = targetId.substring(targetTag.le

【Jquery mobile】动态加载ListView 转的更多相关文章

  1. jquery mobile动态加载数据后无法渲染

    引自:http://blog.sina.com.cn/s/blog_025270e901016lst.html jquery mobile在动态添加html之后无法渲染控件,无法转换控件的办法! jq ...

  2. jquery mobile 动态加载标签时,无法正常展示样式

    原因 在chrome中审查元素,发现其增加了很多没有直接写在页面上的标签和样式.页面标签首先经过jquery.mobile-1.4.5.min.js的处理,添加了许多标签,然后再用css布局 解决方案 ...

  3. jquery:为动态加载的元素添加点击事件

    jquery:为动态加载的元素添加点击事件 最近在做项目的时候遇到了这样一个问题,给用ajax动态加载出来的内容添加点击事件,但是怎么都触发不了,经过查询试验总结出正确的写法 在jquery1.7之前 ...

  4. jQuery EasyUI-DataGrid动态加载表头

    项目总结—jQuery EasyUI-DataGrid动态加载表头     目录(?)[-] 概要 实现 总结   概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid ...

  5. 项目总结—jQuery EasyUI-DataGrid动态加载表头

    http://blog.csdn.net/zwk626542417/article/details/19248747 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGri ...

  6. jquery getScript动态加载JS方法改进详解[转载]

    转载自http://www.jb51.net/article/31973.htm 有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法     $.getScript( ...

  7. js与jquery的动态加载脚本文件

    jquery动态加载 jQuery.getScript(url,[callback]) js动态加载 function loadJs(name) { document.write('<scrip ...

  8. Android动态加载ListView中的Item

    我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点 ...

  9. jquery getScript动态加载JS方法改进详解

    有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...

随机推荐

  1. 在C#中使用C++编写的类

    现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额.因此很多以前搞VC++开发的人都转向用更强大的VS.Net.在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类 ...

  2. 获取 .net framework 路径

    要获取当前程序所使用的.netframework路径: System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(); ...

  3. 使用APC缓存PHP opcode

    1.  关于版本 我的php版本是5.3.10  最开始使用 APC-3.1.8  编译成功,但是 php -m 得不到扩展 , 换成 APC-3.1.9  后解决. 2.  关于配置 apc.cac ...

  4. Ajax封装方法

    /* 调用方法 setInterval(function(){     ajax('get','json_php_html.php','',function(data){     data = JSO ...

  5. iOS设备的尺寸

    iOS设备的尺寸有两种统计单位:像素和点,对于程序员来说,只需要记住点即可. 常见的iOS设备的尺寸(点) 分辨率(点) 设备 分辨率(像素) 320*480 4.4s 320*480(4) 640* ...

  6. SQL 2000/2005/2008 收缩日志方法

    一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大. 方法一:清空日志.1.设置数据库模式为简单模式:打开SQL企业管理器,在 ...

  7. 基于adt-bundle-windows-x86的android开发环境搭建

    0,简介: 最近简单着手了解 android 开发.工欲善其事,必先利其器. 我本人不太喜欢使用java 开发,所以简单了解了下其 c# c++都可以进行android 开发,用c++的话要使用NDK ...

  8. 安装Yii框架时init.bat闪退的处理方法

    已经开启了php_openssl扩展还是会闪退 1.右击'计算机'-'属性'-'高级系统属性'-'环境变量(最下边)': 2.在'系统变量'里找到'path',双击,出现'编辑系统变量',在'变量值' ...

  9. 14. Reverse Linked List II

    Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass. F ...

  10. [EventBus源码解析] EventBus.register 方法详述

    前情概要 在上一篇中,介绍了EventBus的基本使用方法,以及一部分进阶技巧.本篇及以后的几篇blog将会集中解析EventBus.java,看看作者是如何优雅地实现这个看似简单的事件分发/接收机制 ...