jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
?
博客分類(lèi):- ?
- jquery-easyui
現(xiàn)象:
?????? AJAX返回的html無(wú)法做到自動(dòng)渲染為EasyUI的樣式.比如:class="easyui-layout" 等
?
處理方法:
????? 在html片段加載完畢后使用
Js代碼?????? 即可重新渲染。
?
實(shí)現(xiàn)原理:
?
??? 首先附上jquery.parser.js的源碼
Js代碼???? 框架默認(rèn)在頁(yè)面加載完成后自動(dòng)使用$.parser.parse()對(duì)整個(gè)文檔進(jìn)行渲染
?
1. jQuery EasyUI動(dòng)態(tài)添加控件或者ajax加載頁(yè)面后不能自動(dòng)渲染問(wèn)題的解決方法:
我們之所以在頁(yè)面中,只要書(shū)寫(xiě)相應(yīng)easyui的class,Easyui就能成功渲染頁(yè)面,這是因?yàn)榻馕銎髟谀J(rèn)情況下,parser會(huì)在文檔裝載完成的時(shí)候($(document).ready)被調(diào)用一次,而且是渲染整個(gè)頁(yè)面。
然而當(dāng)頁(yè)面裝載完后,如果用javascript生成的DOM中包含了Easyui支持控件的class,比如說(shuō),用javascript生成了以下代碼:
<a?id="tt"?href="#"?class="easyui-linkbutton"?data-options="iconCls:'icon-search'">easyui</a>?雖然頁(yè)面上有這樣的DOM了,但是沒(méi)有被渲染為Easyui的linkbutton插件,原因是Easyui并不會(huì)一直監(jiān)聽(tīng)頁(yè)面,所以不會(huì)主動(dòng)渲染,這時(shí)候就需要手工調(diào)用Easyui的parser進(jìn)行解析了。
手工調(diào)用需要注意以下幾點(diǎn):
解析目標(biāo)為指定DOM的所有子孫元素,不包含這個(gè)DOM自身:
比如上面代碼生成的HTML,id="tt"是我們想要的LinkButton,像下面代碼去手工解析的話(huà)是得不到你想要的結(jié)果的:
?$.parser.parse($('#tt'));道理很簡(jiǎn)單,parser只渲染tt的子孫元素,并不包括tt自身,而它的子孫元素并不包含任何Easyui支持的控件class,所以這個(gè)地方就得不到你想要的效果了,應(yīng)該這樣寫(xiě):
?$.parser.parse($('#tt').parent());渲染tt的父節(jié)點(diǎn)的所有子孫元素就可以了,不管你的javascript輸出什么DOM,直接渲染其父節(jié)點(diǎn)就可以保證頁(yè)面能被正確解析。
----------------------------------------------
試了下,可以。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Caused by: android.c
- 下一篇: docker操作运行一步一步来