jquerymobile动态添加元素之后不能正确渲染解决方法

 jquerymobile动态添加元素之后有些不能被正确渲染的解决方法:

listview:               添加 jq(".detail").listview("refresh");
div或其他:         添加.trigger( "create" );

======================================================================

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

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

 

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

$('<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选项进行配置

  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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery动态渲染是指在网页加载完成后使用jQuery动态添加元素并进行渲染的过程。当动态添加的元素无法被正确渲染时,可以采用以下解决方法解决办法一是使用普通绑定事件的方式。通过给动态添加的元素绑定事件,可以确保元素被正确渲染后能够响应事件。例如,可以使用如下代码给动态添加的li元素绑定点击事件: ```javascript $(".index-module li").click(function () { let GRADEID = $(this).attr("data_GRADEID"); console.log(GRADEID); }); ``` 其中,".index-module li"是动态添加的li元素的选择器,通过click事件来响应用户的点击操作,并获取相应的GRADEID。 解决办法二是将普通事件改为使用.on()方法进行委托事件的绑定。委托事件的绑定可以确保动态添加的元素能够正确渲染后继续响应事件。例如,可以使用如下代码来实现委托事件的绑定: ```javascript $("body").on("click", ".index-module li", function () { let GRADEID = $(this).attr("data_GRADEID"); console.log(GRADEID); }); ``` 其中,"body"是动态添加的元素的容器,".index-module li"是动态添加的li元素的选择器。通过.on()方法将点击事件绑定到body上,然后在事件处理函数中使用事件委托的方式来响应用户的点击操作,并获取相应的GRADEID。 以上是解决jQuery动态渲染中元素无法正确渲染的两种方法。根据具体情况选择适合的方法解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jquery mobile动态添加元素之后不能正确渲染解决方法说明](https://download.csdn.net/download/weixin_38555304/13657564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [jquery动态渲染绑定点击事件不生效](https://blog.csdn.net/weixin_65750673/article/details/126760068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值