- 浏览: 660153 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
要清楚jquery mobile与动态生成元素的关系,得下一番苦功夫去,专研jquery mobile,才会真正了解其中的所以然。今天,在网上看到一blog,解释这个关系非常到位,也很容易理解。贴在这里,供大家阅读。
在Jquerymoblie的使用过程中,动态添加元素后css丢失。
这个问题在之前JqueryMobile使用心得(3)中我已经说明了其原因(因为页面标签首先经过jquery.mobile-1.0a2.min.js的处理,添加了许多标签,然后再用css布局),并且给出了一种解决方法:动态加载jquery.mobile-1.0a2.min.js。
但是经过测试,上面这种方法并不好。首先异步加载造成用户可以看到没有加载JS的页面,并且JS加载过一次后,如果再要动态添加新元素的话,就意味着多次加载JS文件,显示问题先不说,这效率也堪忧。
因此必须提出新方法。
新方法有两个,调用JS的顺序与普通方式相同,都别动态添加JS。
一是将按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素。jquery.mobile-1.0a2.min.js处理过后的样式可以通过chrome浏览器的审查元素功能看到。这个办法的缺点很明显:添加了很多奇怪的标签。
例如:
一般情形下动态添加元素:
onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素:
onelist = "<li class='ui-li-has-icon ui-btn ui-btn-icon-right ui-li ui-li-has-alt ui-btn-up-c' role='option' tabindex='0' data-theme='c'>" +
"<div class='ui-btn-inner'>" +
"<div class='ui-btn-text'>" +
"<img class='ui-li-icon ui-li-thumb' src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' />" +
"<a class='ui-link-inherit' href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +
"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +
"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +
"<span class='ui-btn-inner'>" +
"<span class='ui-btn-text'></span>" +
"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
"<span class='ui-btn-inner ui-btn-corner-all'>" +
"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
"</span>" +
"</span>" +
"</span>" +
"</a></div></div></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +
"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +
"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +
"<span class='ui-btn-inner'>" +
"<span class='ui-btn-text'></span>" +
"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
"<span class='ui-btn-inner ui-btn-corner-all'>" +
"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
"</span>" +
"</span>" +
"</span>" +
"</a></div></div></li>";
}
}
瞧这多了多少代码啊!不过这也是JueryMobile UI前端实际最终处理的代码量。
方法二:refresh
其实JueryMobile 中早就封装了refresh方法。你只需要对新添加的元素节点refresh一下就可以了。
例如: $("#节点名").listview("refresh");
还是刚才那个函数,采用普通的动态添加元素方法,最后加个refresh就搞定了。
function ShowMyListOK(){//处理根目录文件列表函数
if( $glb_result == ""){
alert("返回为空!请重新登录!");
}else{
//alert("成功: "+$glb_result);
$("#wlist").empty();
var $obj = jQuery.parseJSON($glb_result);
var onelist = "";
$.each( $obj, function(i, n){
if( $obj[i].wname != ""){
onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}
$("#wlist").append(onelist);
}
});
$("#wlist").listview("refresh");
}
}
这个方法很好,但是为什么没有早点发现呢?因为jquery.mobile-1.0a2.js的源码确实很不好读。本人JS水平有限,看到里面内容后,以为调用里面方法必须创建对象,误解了JQuery的原意。试了半天才搞出来,必须发帖纪录一下这个小成功。
原文地址:http://hi.baidu.com/%CE%F7%B1%B1%C5%DD%C3%E6%CD%F5/blog/item/e743654de9424a24afc3ab8b.html
在Jquerymoblie的使用过程中,动态添加元素后css丢失。
这个问题在之前JqueryMobile使用心得(3)中我已经说明了其原因(因为页面标签首先经过jquery.mobile-1.0a2.min.js的处理,添加了许多标签,然后再用css布局),并且给出了一种解决方法:动态加载jquery.mobile-1.0a2.min.js。
但是经过测试,上面这种方法并不好。首先异步加载造成用户可以看到没有加载JS的页面,并且JS加载过一次后,如果再要动态添加新元素的话,就意味着多次加载JS文件,显示问题先不说,这效率也堪忧。
因此必须提出新方法。
新方法有两个,调用JS的顺序与普通方式相同,都别动态添加JS。
一是将按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素。jquery.mobile-1.0a2.min.js处理过后的样式可以通过chrome浏览器的审查元素功能看到。这个办法的缺点很明显:添加了很多奇怪的标签。
例如:
一般情形下动态添加元素:
onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
按照jquery.mobile-1.0a2.min.js处理过后的样式,来动态添加元素:
onelist = "<li class='ui-li-has-icon ui-btn ui-btn-icon-right ui-li ui-li-has-alt ui-btn-up-c' role='option' tabindex='0' data-theme='c'>" +
"<div class='ui-btn-inner'>" +
"<div class='ui-btn-text'>" +
"<img class='ui-li-icon ui-li-thumb' src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' />" +
"<a class='ui-link-inherit' href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +
"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +
"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +
"<span class='ui-btn-inner'>" +
"<span class='ui-btn-text'></span>" +
"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
"<span class='ui-btn-inner ui-btn-corner-all'>" +
"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
"</span>" +
"</span>" +
"</span>" +
"</a></div></div></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a>" +
"<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i].wsize) + "</span>" +
"<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefile.html' title='操作' data-theme='c'>" +
"<span class='ui-btn-inner'>" +
"<span class='ui-btn-text'></span>" +
"<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +
"<span class='ui-btn-inner ui-btn-corner-all'>" +
"<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +
"</span>" +
"</span>" +
"</span>" +
"</a></div></div></li>";
}
}
瞧这多了多少代码啊!不过这也是JueryMobile UI前端实际最终处理的代码量。
方法二:refresh
其实JueryMobile 中早就封装了refresh方法。你只需要对新添加的元素节点refresh一下就可以了。
例如: $("#节点名").listview("refresh");
还是刚才那个函数,采用普通的动态添加元素方法,最后加个refresh就搞定了。
function ShowMyListOK(){//处理根目录文件列表函数
if( $glb_result == ""){
alert("返回为空!请重新登录!");
}else{
//alert("成功: "+$glb_result);
$("#wlist").empty();
var $obj = jQuery.parseJSON($glb_result);
var onelist = "";
$.each( $obj, function(i, n){
if( $obj[i].wname != ""){
onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i].wext) + "' class='ui-li-icon'/><a href='#' ";
if($obj[i].wtype == "dir"){//文件夹
onelist += "onclick=\"GetShowMyList(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}else{//非文件夹直接下载
onelist += "onclick=\"download(\'" + $obj[i].wid + "\')\">" + $obj[i].wname +"</a><span class='ui-li-count'>" + CountSize($obj[i].wsize) + "</span><a href='dialog/operatefile.html' >操作</a></li>";
}
$("#wlist").append(onelist);
}
});
$("#wlist").listview("refresh");
}
}
这个方法很好,但是为什么没有早点发现呢?因为jquery.mobile-1.0a2.js的源码确实很不好读。本人JS水平有限,看到里面内容后,以为调用里面方法必须创建对象,误解了JQuery的原意。试了半天才搞出来,必须发帖纪录一下这个小成功。
原文地址:http://hi.baidu.com/%CE%F7%B1%B1%C5%DD%C3%E6%CD%F5/blog/item/e743654de9424a24afc3ab8b.html
发表评论
-
2013年9月15号 文档之重要
2013-09-15 14:45 528在此列举一些理由: 1,每天写工作文档,可以整理每天的工作内容 ... -
2012年3月23号
2012-03-24 22:09 653生活是这样一个战场,冲杀是你活下去唯一的希望。 当你一心向前冲 ... -
2012年3月16日
2012-03-19 09:23 710今天是3月16日,在公司,看着一个实例学习,了解着程序中的颜色 ... -
2012年3月15日
2012-03-16 08:55 732今天是3月15日,是消费者的节日。今天看新闻看到现在大葱的价格 ... -
2012年3月13日
2012-03-14 09:11 652今天是3月13日,风度依然,在几大博客和论坛中穿梭着。现在开始 ... -
2012年3月12号
2012-03-13 08:48 646今天是3月12号,继续学习IOS着,发现了很多很好的资源,我要 ... -
2012年3月9号
2012-03-11 09:36 687今天是3月9号,在公司用两台电脑,一台台式机,一台苹果一体机, ... -
2012年3月8号
2012-03-09 08:55 772今天是3月8号,今天被武总叫到办公室,把我批评了一番,把我扣下 ... -
2012年3月7号
2012-03-08 12:47 611今天是3月7号,将辞职信交上去了,等待的是审批。心里特别高兴, ... -
2012年3月6号
2012-03-07 09:05 624今天是3月6号,今天特别头痛,决定辞职了。但老总给我讲了一大串 ... -
2012年3月5号
2012-03-06 08:59 593今天是3月5号,今天在公司做的唯一活是把一个文件夹下的文件重命 ... -
2012年3月2号
2012-03-05 09:01 598今天是3月3号,早上下起了小雪,今天来到公司,比较清闲,没有什 ... -
2012年3月1号
2012-03-02 09:15 646今天是3月1号,时间悄悄走进了春天,万物复苏的季节。人说一年之 ... -
2012年2月29
2012-03-01 08:59 647今天是2月29,我的导师在我空间里留了言,问候我,怪我这么久也 ... -
2012年2月28
2012-02-29 08:58 690今天是2月28,昨天联系了一好友,因为考研的成绩已经出来了,想 ... -
2012年2月27
2012-02-28 08:56 602今天是2月27,大早起来,就冲冲忙忙,为了赶上车,累的够呛。中 ... -
2012年2月25
2012-02-27 09:23 703今天是2月25,去参加了CSDN一个会议,主题是关于互联网安全 ... -
2012年2月24
2012-02-25 08:26 595今天是2月24,这两天熟悉过考框架一直在原地徘徊阶段,痛苦中。 ... -
2012年2月23
2012-02-23 22:20 632今天是2月22,这两天好像自己的精力明显下降,不知道怎么回事, ... -
2012年2月22
2012-02-23 22:15 631今天是2月22,也就是阴历的二月一号,现在改用阳历的时间来写日 ...
相关推荐
3. **jQuery Mobile JavaScript**:这是jQuery Mobile的核心库,负责处理触摸事件、页面加载和转换、以及组件的动态化。同样,可以链接到CDN或本地的JS文件。 4. **可能的额外文件**:根据示例的复杂性,可能会有...
jQuery Mobile 的`<div data-role="navbar">`元素是创建固定顶部或底部导航栏的理想选择。每个导航项可以通过`<a>`标签来创建,并通过`href`属性链接到相应的页面。此外,`data-icon`属性可以添加图标,提升用户体验...
5. **Canvas与SVG**:这两种图形绘制技术,可用于创建动态图表、游戏或其他复杂的视觉效果。 **三、学习jQuery Mobile模板** 这个资源包含了多套jQuery Mobile模板,它们是预先设计好的界面布局,可以帮助初学者...
在这个主题下,我们将深入探讨如何利用jQuery Mobile创建一个具有吸引力的相册展示。 首先,jQuery Mobile的核心是其基于HTML5的组件模型,这使得开发者能够轻松地创建具有触摸优化交互的页面。在创建相册样式时,...
总结,jQuery Mobile通过AJAX与后台进行通信,结合页面生命周期事件、表单提交和响应数据处理,可以实现动态、交互的移动应用。在与Java后端集成时,理解JSP和Servlet的工作原理,以及RESTful API设计,有助于构建...
这个文件中,jQuery Mobile将DOM元素转换为可触摸的交互元素,并提供了一系列API和方法,如`.page()`用于初始化页面,`.changePage()`用于页面间的切换。此外,还有一系列用于事件绑定和组件创建的函数。 对于页面...
2. **相册容器**:创建一个用于显示相册的容器,例如使用`<div>`元素,并赋予它一个特定的数据-角色,如"data-role='content'",这是jQuery Mobile页面的主要内容区域。 3. **图片列表**:将每张图片包装在一个链接...
在 jQuery Mobile 中,我们需要确保截图功能与页面的导航、主题和响应式布局兼容。 5. **图片裁剪**:在“多种模式”中,可能指的是用户可以选择不同的截图区域,比如自由形状、矩形、圆形等。这需要使用类似 Jcrop...
它利用jQuery Mobile的样式和事件处理,与手机设备的触摸操作完美融合。在初始化时,只需在HTML元素上添加特定的数据属性,如"data-role='datebox'",即可将普通的输入框转换为日期选择器。 `jquery.mobile.datebox...
1. **主题系统**:jQuery Mobile使用一套主题系统(ThemeRoller),通过CSS类定义页面元素的视觉样式。开发者可以根据需要自定义主题,确保应用的视觉一致性。 2. **数据属性和增强**:jQuery Mobile通过"data-...
- **定义与背景**:jQuery Mobile 是一款流行的开源 JavaScript 库,它主要用于构建响应式的 Web 应用程序,支持触摸操作,兼容多种移动设备。该框架基于 HTML5 和 CSS3 技术,能够提供一致且美观的用户体验。 - **...
最后,`jquery.mobile.structure-1.4.1.css`是一个关键文件,它定义了jQuery Mobile的页面结构和布局规则,包括页头、页脚、内容区域等元素的样式,确保了页面在不同屏幕尺寸下的适应性。 jQuery Mobile 1.4.1版的...
本案例将深入探讨如何使用 jQuery Mobile 创建一个简单的移动端原型设计。 ### 一、jQuery Mobile 的核心概念 1. **数据属性(Data Attributes)**:jQuery Mobile 使用 HTML5 数据属性(data-*)来增强和定制 UI ...
jQuery Mobile 是一个流行的前端框架,专为移动设备和触摸交互设计,它简化了在不同设备上创建响应式、触摸友好的网页应用的过程。这个高级设计模板是针对那些希望利用jQuery Mobile的强大功能,构建出具有专业外观...
通过本书的学习,读者将会获悉jQuery Mobile的核心特性,以及如何创建可主题化的设计,还会掌握jQuery Mobile的API,以及如何使用PhoneGap来扩展jQuery Mobile。 《jQuery Mobile快速入门》适合想要掌握jQuery ...
为了提高性能,应对移动设备的限制,jQuery Mobile 采用延迟增强策略,只对可见的元素进行增强。此外,合理地组织和分隔页面、减少 AJAX 请求、使用异步脚本加载等方式也能有效提升性能。 综上所述,jQuery Mobile ...
2. **生成HTML标记**:在控件的`Render`方法中,你需要生成对应的HTML和JavaScript代码,确保这些代码在客户端能够正确解析为jQuery Mobile元素。 3. **处理事件**:为了实现服务器端的事件处理,你需要重写`...
5. **数据链接(Data-Linking)**:通过 data- attributes,可以将 HTML 元素与 JavaScript 事件绑定,实现页面的动态更新。 6. **可扩展组件**:包括下拉菜单、滑块、按钮、表单、弹出对话框等多种 UI 控件,方便...
《Android与jQuery Mobile:类库解析与实战指南》 在移动开发领域,Android以其开源、灵活的特点备受开发者青睐。为了提升用户体验,许多开发者选择在Android应用中集成Web技术,其中jQuery Mobile是一个广受欢迎的...
4. **触控事件**:jQuery Mobile 添加了对触控事件的支持,如 `tap`(点击)、`taphold`(长按)、`swipe`(滑动)等,方便在移动设备上创建交互式元素。 5. **表单增强**:框架会自动识别并美化基本的HTML表单元素...