详解关于JQuery Mobile使用心得

移动开发
Jquery Mobile使用心得是本文要介绍的内容,主要是来了解Jquery Mobile使用指南的一个指引,具体内容来看本文详解。

Jquery Mobile使用心得是本文要介绍的内容,主要是来了解Jquery Mobile使用指南的一个指引,具体内容来看本文详解。在Jquery Mobile的使用过程中,动态添加元素后css丢失。因为页面标签首先经过jquery mobile-10a2minjs的处理,添加了许多标签,然后再用css布局,并且给出了一种解决方法:动态加载jquery mobile-10a2minjs。

但是经过测试,上面这种方法并不好。首先异步加载造成用户可以看到没有加载JS的页面,并且JS加载过一次后,如果再要动态添加新元素的话,就意味着多次加载JS文件,显示问题先不说,这效率也堪忧。

因此必须提出新方法。

新方法有两个,调用JS的顺序与普通方式相同,都别动态添加JS。

一是将按照jquery mobile-10a2minjs处理过后的样式,来动态添加元素。jquery mobile-10a2minjs处理过后的样式可以通过chrome浏览器的审查元素功能看到。这个办法的缺点很明显:添加了很多奇怪的标签。

例如:

一般情形下动态添加元素:

  1. onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' class='ui-li-icon'/><a href='#' ";  
  2. if($obj[i]wtype == "dir"){//文件夹  
  3. onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
  4. <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>"; 

}else{//非文件夹直接下载

  1. onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a><span class='ui-li-count'>" + CountSize($obj[i]wsize) + "  
  2. </span> 
  3. <a href='dialog/operatefilehtml' > 
  4. 操作</a></li>";

按照jquery mobile-10a2minjs处理过后的样式,来动态添加元素:

  1. 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'>" +  
  2.  "<div class='ui-btn-inner'>" +  
  3.  "<div class='ui-btn-text'>" +  
  4.  "<img class='ui-li-icon ui-li-thumb' src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' />" +  
  5.  "<a class='ui-link-inherit' href='#' ";  
  6. if($obj[i]wtype == "dir"){//文件夹  
  7. onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>" +  
  8.   "<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i]wsize) + "</span>" +  
  9.   "<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefilehtml' title='操作' data-theme='c'>" +  
  10.   "<span class='ui-btn-inner'>" +  
  11.     "<span class='ui-btn-text'></span>" +  
  12.     "<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +  
  13.       "<span class='ui-btn-inner ui-btn-corner-all'>" +  
  14.         "<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +  
  15.       "</span>" +  
  16.     "</span>" +  
  17.   "</span>" +  
  18.   "</a></div></div></li>";  
  19. }else{//非文件夹直接下载  
  20. onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>" +  
  21.   "<span class='ui-li-count ui-btn-up-c ui-btn-corner-all'>" + CountSize($obj[i]wsize) + "</span>" +  
  22.   "<a class='ui-li-link-alt ui-btn ui-btn-up-c' href='dialog/operatefilehtml' title='操作' data-theme='c'>" +  
  23.   "<span class='ui-btn-inner'>" +  
  24.     "<span class='ui-btn-text'></span>" +  
  25.     "<span class='ui-btn ui-btn-up-d ui-btn-icon-notext ui-btn-corner-all ui-shadow' data-theme='d'>" +  
  26.       "<span class='ui-btn-inner ui-btn-corner-all'>" +  
  27.         "<span class='ui-icon ui-icon-gear ui-icon-shadow'></span>" +  
  28.       "</span>" +  
  29.     "</span>" +  
  30.   "</span>" +  
  31.   "</a></div></div></li>";  
  32. }  

瞧这多了多少代码啊!不过这也是JQuery Mobile UI前端实际最终处理的代码量。

方法二:refresh

其实JQuery Mobile 中早就封装了refresh方法。你只需要对新添加的元素节点refresh一下就可以了。

例如: $("#节点名")listview("refresh");

还是刚才那个函数,采用普通的动态添加元素方法,最后加个refresh就搞定了。

  1. function ShowMyListOK(){//处理根目录文件列表函数  
  2. if( $glb_result == ""){  
  3. alert("返回为空!请重新登录!");  
  4. }else{  
  5. //alert("成功: "+$glb_result);  
  6. $("#wlist")empty();  
  7. var $obj = jQueryparseJSON($glb_result);  
  8. var onelist = "";  
  9. $each( $obj, function(i, n){  
  10. if( $obj[i]wname != ""){  
  11.    onelist = "<li><img src='stylesheets/images/file_icon/" + SwitchIcon($obj[i]wext) + "' class='ui-li-icon'/><a href='#' ";  
  12. if($obj[i]wtype == "dir"){//文件夹  
  13. onelist += "onclick=\"GetShowMyList(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
  14. <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>";  
  15. }else{//非文件夹直接下载  
  16. onelist += "onclick=\"download(\'" + $obj[i]wid + "\')\">" + $obj[i]wname +"</a>
  17. <span class='ui-li-count'>" + CountSize($obj[i]wsize) + "</span><a href='dialog/operatefilehtml' >操作</a></li>";  
  18. }  
  19. $("#wlist")append(onelist);  
  20. }  
  21. });  
  22. $("#wlist")listview("refresh");  
  23. }  

这个方法很好,但是为什么没有早点发现呢?因为jquery mobile-10a2js的源码确实很不好读。本人JS水平有限,看到里面内容后,以为调用里面方法必须创建对象,误解了JQuery的原意。试了半天才搞出来,必须发帖纪录一下这个小成功。

小结:详解关于JQuery Mobile使用心得的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2009-06-26 16:12:08

ThickboxjQuery

2011-01-19 14:57:09

Thunderbird

2009-06-19 11:09:27

Spring AOP

2011-01-07 11:14:17

Nginx负载均衡负载均衡

2010-02-01 10:15:07

C++ TinyXML

2011-09-01 15:00:48

jQuery MobiDemo

2011-09-01 14:14:00

jQuery Mobi

2010-03-02 17:33:49

Android 2.0

2009-08-28 10:08:15

C# using语句

2011-07-21 14:57:34

jQuery Mobi

2009-08-31 10:00:07

C#静态变量

2009-08-11 11:42:50

Ruby使用心得

2011-09-01 14:55:41

jQuery Mobi列表视图

2010-06-01 13:42:37

TortoiseSVN

2011-04-20 13:59:28

爱普生V100扫描仪

2011-03-15 11:05:03

2011-09-08 10:18:09

Windows MobWidgets

2010-08-06 11:12:38

FlexCairngorm框架

2009-08-26 13:31:21

JavaScript使

2012-10-09 09:28:48

jQuery Mobi餐厅订餐应用
点赞
收藏

51CTO技术栈公众号