jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
2015-05-26 23:31
1131 查看
博客分类:
jquery-easyui
jQueryAjax框架HTML
现象:
AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout" 等
处理方法:
在html片段加载完毕后使用
Js代码
$.parser.parse(context)
即可重新渲染。
实现原理:
首先附上jquery.parser.js的源码
Js代码
(function($){
$.parser = {
auto: true,
plugins:['linkbutton','menu','menubutton','splitbutton','layout',
'tree','window','dialog','datagrid',
'combobox','combotree','numberbox','validatebox',
'calendar','datebox','panel','tabs','accordion'
],
parse: function(context){
if ($.parser.auto){
for(var i=0; i<$.parser.plugins.length; i++){
(function(){
var name = $.parser.plugins[i];
var r = $('.easyui-' + name, context);
if (r.length){
if (r[name]){
r[name]();
} else if (window.easyloader){
easyloader.load(name, function(){
r[name]();
})
}
}
})();
}
}
}
};
$(function(){
$.parser.parse();
});
})(jQuery);
框架默认在页面加载完成后自动使用$.parser.parse()对整个文档进行渲染
1. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法:
我们之所以在页面中,只要书写相应easyui的class,Easyui就能成功渲染页面,这是因为解析器在默认情况下,parser会在文档装载完成的时候($(document).ready)被调用一次,而且是渲染整个页面。
然而当页面装载完后,如果用javascript生成的DOM中包含了Easyui支持控件的class,比如说,用javascript生成了以下代码:
<a id="tt" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">easyui</a>
虽然页面上有这样的DOM了,但是没有被渲染为Easyui的linkbutton插件,原因是Easyui并不会一直监听页面,所以不会主动渲染,这时候就需要手工调用Easyui的parser进行解析了。
手工调用需要注意以下几点:
解析目标为指定DOM的所有子孙元素,不包含这个DOM自身:
比如上面代码生成的HTML,id="tt"是我们想要的LinkButton,像下面代码去手工解析的话是得不到你想要的结果的:
$.parser.parse($('#tt'));
道理很简单,parser只渲染tt的子孙元素,并不包括tt自身,而它的子孙元素并不包含任何Easyui支持的控件class,所以这个地方就得不到你想要的效果了,应该这样写:
$.parser.parse($('#tt').parent());
渲染tt的父节点的所有子孙元素就可以了,不管你的javascript输出什么DOM,直接渲染其父节点就可以保证页面能被正确解析。
----------------------------------------------
试了下,可以。
相关文章推荐
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
- fullpage插件动态添加节点,页面不能动态渲染问题解决方法
- 利用ajax在index页面自动执行方法并显示相关内容,在执行相关按钮操作(如登录注册)后返回index页面后ajax不执行,无法显示相关内容的问题解决方法之一
- 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题
- 使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
- VB源程序总是提示加载错误,或者不能加载OCX控件解决方法
- java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路
- mfc2015不能添加控件变量问题的解决方法
- 通过Ajax动态生成的页面,解决复选框,选择一次不能再选择的问题
- SeimiCrawler+SeimiAgent完美解决动态页面渲染Ajax抓取问题
- 解决H5页面浏览器返回或前进时ajax不能重新加载数据的问题
- Ajax 动态载入html页面后不能执行其中的js快速解决方法
- java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路
- jquerymobile动态添加元素之后不能正确渲染解决方法
- 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题