资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
jQuery EasyUI 动态添加控件或者 ajax 加载页面后不能自动渲染问题的解决方法2011-03-22 12:53现象:AJAX 返回的 html 无法做到自动渲染为 EasyUI 的样式 .比如:easyui-layout 等处理方法:在 html 片段加载完毕后使用Js 代码 1. $.parser.parse(context) 即可重新渲染。实现原理:首先附上 jquery.parser.js 的源码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; i2 13 24 虽然页面上有这样的 DOM 了,但是没有被渲染为 Easyui 的 accordion 插件,原因很简单,Easyui 并不会一直监听页面,所以不会主动渲染,这时候就需要手工调用 Easyui 的 parser 进行解析了。不过手工调用需要注意以下几点:(1) 解析目标为指定 DOM 的所有子孙元素,不包含这个 DOM 自身:比如上面代码生成的 HTML,id=tt 是我们想要的手风琴 DIV,像下面代码去手工解析的话是得不到你想要的结果的:1 $.parser.parse($(#tt);道理很简单,parser 只渲染 tt 的子孙元素,并不包括 tt 自身,而它的子孙元素并不包含任何Easyui 支持的控件 class,所以这个地方就得不到你想要的手风琴效果了,应该这样写:1 $.parser.parse($(#tt).parent();渲染 tt 的父节点的所有子孙元素就可以了,个人觉得通过 jQuery 的 parent()方法是最安全不过的了,不管你的 javascript 输出了什么 DOM,直接渲染其父节点就可以保证页面能被正确解析。(2) 某些组件无法多次解析同一个 DOM 元素:如果页面上本身就有 tt 元素:1 2 页面装载完,你通过脚本向 tt 元素 append 两个子 DIV,然后解析:1 $(#tt).append(12)2 $.parser.parse($(#tt).parent();不要以为你会得到一个满意的 accordion,你什么也得不到,因为页面初始化的时候 parser 就主动渲染过 tt 元素,这时候 tt 已经被 parser 重构,你再到脚本中 append,得到的 DOM 结构,其实并不是你预想的结果了,所以要避免这种用法。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号