现象:

AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout" 等

处理方法:

在html片段加载完毕后使用

  1. $.parser.parse(context)

即可重新渲染。

实现原理:

首先附上jquery.parser.js的源码

  1. (function($){
  2. $.parser = {
  3. auto: true,
  4. plugins:['linkbutton','menu','menubutton','splitbutton','layout',
  5. 'tree','window','dialog','datagrid',
  6. 'combobox','combotree','numberbox','validatebox',
  7. 'calendar','datebox','panel','tabs','accordion'
  8. ],
  9. parse: function(context){
  10. if ($.parser.auto){
  11. for(var i=0; i<$.parser.plugins.length; i++){
  12. (function(){
  13. var name = $.parser.plugins[i];
  14. var r = $('.easyui-' + name, context);
  15. if (r.length){
  16. if (r[name]){
  17. r[name]();
  18. } else if (window.easyloader){
  19. easyloader.load(name, function(){
  20. r[name]();
  21. })
  22. }
  23. }
  24. })();
  25. }
  26. }
  27. }
  28. };
  29. $(function(){
  30. $.parser.parse();
  31. });
  32. })(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,直接渲染其父节点就可以保证页面能被正确解析。

----------------------------------------------

试了下,可以。

最新文章

  1. mac安装虚拟机
  2. 支持Cookie并开放了一些特殊设置项的HttpWebClient
  3. Android中Webview使用自定义的javascript进行回调
  4. weizmann数据库
  5. 选中CheckBoxList的值放到TextBox中,再次选中从textBox中删除
  6. 惊人go语言(image网站开发)
  7. golang操作memcached 转自https://blog.csdn.net/weixin_37696997/article/details/78760397
  8. 【设计模式】不同设计模式体现IOC控制反转
  9. 帝国cms建站总结-(分页)
  10. Swig--模板引擎
  11. Linux-(type,vim)
  12. C编程基础
  13. ios中常用的方法
  14. Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)
  15. 状压DP入门详解+题目推荐
  16. mysql修改表操作
  17. Android开发日记(一)
  18. VHF、UHF的频率范围
  19. 常用sql commands以及mysql问题解决日志
  20. C#——DataGridView选中行,在TextBox中显示选中行的内容

热门文章

  1. 【NOI2004】郁闷的出纳员
  2. 《bunzip2命令》-linux命令五分钟系列之八
  3. H5相关
  4. javascript实现ajax
  5. jquery中的ajax方法详解
  6. jQuery API中文文档
  7. G - A+B for Input-Output Practice (VI)
  8. 2013 年 —— Facebook 在开源方面的工作介绍
  9. ASP.NET 安全认证
  10. 修改weblogic jvm启动参数