jquery mobile 动态插入元素的正确渲染方法

来源:互联网 发布:推荐几家淘宝高仿鞋店 编辑:程序博客网 时间:2024/05/16 07:44

转载至:http://blog.csdn.net/ibingow/article/details/7655659

感谢此篇文章解决了我jqm append后为普通html问题


jqm在初始化页面时会根据data-xxx在各元素中插入jqm的属性和类等。在页面初始化结束后,如果动态的插入一个元素,往往显示很丑陋,因为没有插入jqm的样式。这个可以用浏览器里的开发工具来查看,会发现有些元素多了很多类,而动态插入的元素代码还是你写的那样子。

如果要使动态插入的元素具有jqm的样式,可以对jqm对象触发create事件:

[javascript] view plaincopy
  1. <span style="font-size:18px;"> $(selector).trigger('create');</span>  

create事件适用范围广,甚至可以是 不存在的元素(raw markup?),比如要插入一个按钮

[javascript] view plaincopy
  1. $('<a data-role="button">dy button</a>').appendTo('#content').trigger('create');  


有些对象提供了refresh 方法,如listview、flip toggle。与create的区别是refresh方法需要作用在已存在的对象上,如

$('ul').listview('refresh'),而且refresh只会去更新新加入的元素,如listview里最新append的元素会更新,原有的保持不变。(不知有没理解错,有些没测试。原文http://stackoverflow.com/questions/7663078/jquery-mobile-page-refresh-mechanism)


不使用jqm样式:

如果不希望jqm自动初始化你的元素,有两种方法。加入data-role="none"属性,或者在mobileinit事件中对keepNative选项进行配置

[javascript] view plaincopy
  1. $(document).bind('mobileinit',function(){  
  2.     $.mobile.page.prototype.options.keepNative = "select, input.foo, textarea.bar";  
  3. });  

参考文献

 http://stackoverflow.com/questions/7663078/jquery-mobile-page-refresh-mechanism

http://jquerymobiledictionary.pl/faq.html

http://stackoverflow.com/questions/5651776/jquery-mobile-rendering-problems-with-content-being-added-after-the-page-is-init

http://jquerymobile.com/demos/1.0a4.1/docs/forms/docs-forms.html

http://stackoverflow.com/questions/10235826/jquerymobile-dynamic-css-not-rendering


0 0
原创粉丝点击