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

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

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

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

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

[javascript]  view plain copy
  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 plain copy
  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值