jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
现象:
?????? AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout" 等
?
处理方法:
????? 在html片段加载完毕后使用
$.parser.parse(context)
???? 即可重新渲染。
?
实现原理:
?
??? 首先附上jquery.parser.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()对整个文档进行渲染
?
$.parser.auto //是否自动进行渲染 $.parser.plugins //包含目前EasyUI框架中所有的插件名称 $.parser.parse(context) //context 为待查找的 DOM 元素集、文档或 jQuery 对象,为空时默认为整个文档 //渲染对象为: class="easyui-pluginName"的元素