AJAX异步获取HTML之后 JQuery EasyUI 的界面重绘的解决办法
2011-04-02 14:10
246 查看
当AJAX异步获取了HTML代码之后,这一段代码是包含JQuery EasyUI 的属性和样式的,这时这些属性和样式并不会生效。这里说说解决方案
我们先来了解页面在刷新或打开时JQuery EasyUI都干了些什么:
在加载完HTML的时候,JQuery EasyUI 会找class=“easyui-xxxx”的样式来初始化JQuery EasyUI 控件,搜索JQuery EasyUI 混淆之后的源代码,找到这么一段:
(function($){
$.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<$.parser.plugins.length;i++){
var name=$.parser.plugins[i];
var r=$(".easyui-"+name,_143);
if(r.length){
if(r[name]){
r[name]();
}else{
aa.push({name:name,jq:r});
}
}
}
if(aa.length&&window.easyloader){
var _144=[];
for(var i=0;i<aa.length;i++){
_144.push(aa[i].name);
}
easyloader.load(_144,function(){
for(var i=0;i<aa.length;i++){
var name=aa[i].name;
var jq=aa[i].jq;
jq[name]();
}
$.parser.onComplete.call($.parser,_143);
});
}else{
$.parser.onComplete.call($.parser,_143);
}
}};
$(function(){
if(!window.easyloader&&$.parser.auto){
$.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控件。
我们先来了解页面在刷新或打开时JQuery EasyUI都干了些什么:
在加载完HTML的时候,JQuery EasyUI 会找class=“easyui-xxxx”的样式来初始化JQuery EasyUI 控件,搜索JQuery EasyUI 混淆之后的源代码,找到这么一段:
(function($){
$.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<$.parser.plugins.length;i++){
var name=$.parser.plugins[i];
var r=$(".easyui-"+name,_143);
if(r.length){
if(r[name]){
r[name]();
}else{
aa.push({name:name,jq:r});
}
}
}
if(aa.length&&window.easyloader){
var _144=[];
for(var i=0;i<aa.length;i++){
_144.push(aa[i].name);
}
easyloader.load(_144,function(){
for(var i=0;i<aa.length;i++){
var name=aa[i].name;
var jq=aa[i].jq;
jq[name]();
}
$.parser.onComplete.call($.parser,_143);
});
}else{
$.parser.onComplete.call($.parser,_143);
}
}};
$(function(){
if(!window.easyloader&&$.parser.auto){
$.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控件。
相关文章推荐
- AJAX异步获取HTML之后 JQuery EasyUI 的界面重绘的解决办法
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- Ajax异步获取html数据中包含js方法无效的解决方法
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- 关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
- Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)
- Qt 5界面修改无效的问题解决QtDesigner修改之后无效的解决办法
- ubuntu kylin 16.04 虚拟机安装nvidia375之后系统登陆界面无限循环解决办法
- jquery ajax done 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
- 手机解锁后,横屏的界面重绘了(Activity重新生成了)解决办法
- Ajax异步请求阻塞情况的解决办法
- iframe框架与Ajax异步操作,一同出现时iframe内容的url内容会弹出的解决办法。
- AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
- 在myeclipse中的jsp里引入html,浏览器界面显示乱码的解决办法
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据