parser,故名意思,就是解析器的意思,别看他只有那么几行代码,jQuery Easyui 能够根据class就能正常渲染页面全靠它了。一般情况下,我们并用不到解析器,本文主要讨论一下,什么情况下会用到它,如何使用。

自动调用parser:

我们之所以在页面中,只要书写相应的class,Easyui就能成功渲染页面,这是因为解析器在默认情况下,会在文档装载完成的时候($(document).ready)被调用一次,而且是渲染整个页面。

手动调用parser:

有些童鞋反映,当页面装载完后,如果用javascript生成的DOM中包含了Easyui支持控件的class,比如说,用javascript生成了以下代码:

<div class="easyui-accordion" id="tt">
<div title="title1">1</div>
<div title="title2">2</div>
</div>

虽然页面上有这样的DOM了,但是没有被渲染为Easyui的accordion插件,原因很简单,Easyui并不会一直监听页面,所以不会主动渲染,这时候就需要手工调用Easyui的parser进行解析了。不过手工调用需要注意以下几点:

(1) 解析目标为指定DOM的所有子孙元素,不包含这个DOM自身:

比如上面代码生成的HTML,id="tt"是我们想要的手风琴DIV,像下面代码去手工解析的话是得不到你想要的结果的:

$.parser.parse($('#tt'));

道理很简单,parser只渲染tt的子孙元素,并不包括tt自身,而它的子孙元素并不包含任何Easyui支持的控件class,所以这个地方就得不到你想要的手风琴效果了,应该这样写:

$.parser.parse($('#tt').parent());

渲染tt的父节点的所有子孙元素就可以了,个人觉得通过jQuery的parent()方法是最安全不过的了,不管你的javascript输出了什么DOM,直接渲染其父节点就可以保证页面能被正确解析。

(2) 某些组件无法多次解析同一个DOM元素:

如果页面上本身就有tt元素:

<div class="easyui-accordion" id="tt">
</div>

页面装载完,你通过脚本向tt元素append两个子DIV,然后解析:

$('#tt').append('<div title="title1">1</div><div title="title2">2</div>')
$.parser.parse($('#tt').parent());

不要以为你会得到一个满意的accordion,你什么也得不到,因为页面初始化的时候parser就主动渲染过tt元素,这时候tt已经被parser重构,你再到脚本中append,得到的DOM结构,其实并不是你预想的结果了,所以要避免这种用法。

最新文章

  1. 【Win 10 应用开发】InkToolBar——涂鸦如此简单
  2. showModalDialog打开页面有缓存,不走action
  3. GDataXMLNode应用
  4. BZOJ 1036: [ZJOI2008]树的统计Count
  5. JDBC进行批处理
  6. 为什么要选择Sublime Text3?
  7. Spring 使用中的设计模式
  8. Demo13
  9. 用Vue.js和Webpack开发Web在线钢琴
  10. Swift中共有74个内建函数
  11. Spring配置注解详解
  12. Linux pmstat命令
  13. 【Learning】 欧拉回路的求解
  14. 零基础自学Python十天,写了一款猜数字小游戏,附源码和软件下载链接!
  15. vue较深入的知识点
  16. Timeline扩展功能实践指南
  17. python 变量之小整数池跟大整数池
  18. exp/expdp 与 imp/impdp命令导入导出数据库详解
  19. python 离群点检测
  20. python之继承与派生

热门文章

  1. mvc架构的简单登录系统,jsp
  2. 从SQL注入谈数据访问层
  3. C#之Action和Func的用法(转自 https://www.cnblogs.com/LipeiNet/p/4694225.html)
  4. Android 对话框黑色边框的解决
  5. swift内存管理
  6. Python内置数据结构之字符串str
  7. 【python爬虫和正则表达式】爬取表格中的的二级链接
  8. C语言手册-read
  9. Object-C,NSArraySortTest,数组排序3种方式
  10. 【codeforces 417D】Cunning Gena