标签:
转自:http://www.cnblogs.com/sunjie9606/archive/2012/09/13/2683636.html
现象:
AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout" 等
处理方法:
在html片段加载完毕后使用
即可重新渲染。
实现原理:
首先附上jquery.parser.js的源码
框架默认在页面加载完成后自动使用$.parser.parse()对整个文档进行渲染
当AJAX异步获取了HTML代码之后,这一段代码是包含JQuery EasyUI 的属性和样式的,这时这些属性和样式并不会生效。这里说说解决方案
我们先来了解页面在刷新或打开时JQuery EasyUI都干了些什么:
在加载完HTML的时候,JQuery EasyUI 会找class=“easyui-xxxx”的样式来初始化JQuery EasyUI 控件,搜索JQuery EasyUI 混淆之后的源代码,找到这么一段:
(function(Extra open brace or missing close brace.parser={auto:true,onComplete:function(_142){
},plugins:["linkbutton","menu","menubutton","splitbutton","tree","combobox","combotree","numberbox","validatebox","numberspinner","timespinner","calendar","datebox","layout","panel","datagrid","tabs","accordion","window","dialog"],parse:function(_143){
var aa=[];
for(var i=0;i<Misplaced &(function(){
if(!window.easyloader&&Extra open brace or missing close brace.parser.parse();
}
});
})(jQuery);
当看完之后$.parser.parse();这一句不就是重绘JQuery EasyUI 控件的么。当执行这一句话的时候JQuery EasyUI 会对整个页面的DOM进行解析,效率是比较慢的。当然我们AJAX异步获取的仅仅是一段HTML,没有必要对整个页面进行解析。
当我们异步获取来的HTML放入一个容器里,比如这样
$(‘#xxxx‘).html(异步获取回来的内容) ,我们在解析这一段异步获取回来的HTML中的JQuery EasyUI控件时,可以这样做:
.parser.parse((‘#xxxx‘));
这样就只解析$(‘#xxxx‘)内部的HTML中的JQuery EasyUI控件。
可以使用$.parser.parse();这个方法进行处理;
此测试已经通过,此方法很可靠。
jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
标签:
原文地址:http://www.cnblogs.com/exmyth/p/4564814.html