日期:2014-05-16  浏览次数:20807 次

jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染有关问题的解决办法

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"的元素