转自原文地址:http://www.easyui.info/archives/216.html

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结构,其实并不是你预想的结果了,所以要避免这种用法。

jQuery EasyUI parser 的使用场景的更多相关文章

  1. jquery easyui datebox 的使用

    看了jquery easyui databox的官方api,还可以加入倒是很简单,但是想要获得他的值和修改值就很费劲,不知道怎么弄,试了n次终于搞定.这里总结一下,供有相同问题的人查询. 1. 官方a ...

  2. JavaScript UI选型及Jquery EasyUI使用经验谈

    最近由于项目需要,对js UI作了一些简单的了解和使用,有自己的一些想法,在这里留个记录. 当然,我的专注点在管理系统的范围内,所以互联网网站及其他形态的应用这里不提及,所以jQuery UI和Boo ...

  3. [转]浅谈jQuery EasyUI的属性设置

    原文地址:http://www.easyui.info/archives/1664.html 对jQuery EasyUI有一定了解的话,应该知道基本上每一个组件都有一个"options&q ...

  4. Jquery easyui中的有效性检查

    使用过程中的一积累,备查. EasyUI 验证框使用方法: //*************************** missingMessage:未填写时显示的信息 validType:验证类型见 ...

  5. jquery easyui中文培训文档

    目  录 1.... Accordion(可折叠标签)... 2 1.1          实例... 2 1.2          参数... 3 2.... DateBox(日期框)... 4 2 ...

  6. Jquery easyui 教程

            Jquery easyui教程                 目  录 1基本拖放... 4 2构建购物车型拖放... 5 3创建课程表... 8 4菜单和按钮Menu and Bu ...

  7. jquery easyui tab加载内容的几种方法

    转:http://my.oschina.net/u/2331760/blog/391937?fromerr=saqeoxxB jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页 ...

  8. jquery easyUI 日期格式化,DateBox只显示年

    jquery easyUI 日期格式化,DateBox只显示年 >>>>>>>>>>>>>>>>> ...

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

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

随机推荐

  1. 256MB小内存MySQL配置优化

    [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mys ...

  2. easyui-treegrid移除树节点出错

    easyui-treegrid移除树节点出错 >>>>>>>>>>>>>>>>>>>& ...

  3. php 表单的活用

    一般表单都是用过POST 方式对数据进行隐秘的传输用, 可以偶尔你也会发现这样的用法,表单不止能够进行隐秘的传输.还能够进行URL的传输,并且是同时进行的 提交页面,在action 后面加了URL后缀 ...

  4. C#实现从EXCEL文件读取数据到SqlServer数据库

    用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  5. 学习java随笔第四篇:运算符

    算术运算符 "+":加法运算符,也可做字符连接用途 "-":减法运算符 "*":乘法运算符 "/":除法运算符 &quo ...

  6. iOS8上本地通知接收不到的问题

    需要手动加上这句话  if ([UIApplicationinstancesRespondToSelector:@selector(registerUserNotificationSettings:) ...

  7. winform中的chat

    百度一下 源代码下载:百度一下

  8. Windows phone 之自定义控件(补充)

    <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= ...

  9. 《深入.NET平台和C#编程》内部测试题-笔试试卷

    1.以下关于序列化和反序列化的描述错误的是( C). a.序列化是将对象的状态存储到特定存储介质中的过程 b.二进制格式化器的Serialize()和Deserialize()方法可以用来实现序列化和 ...

  10. Jquery not选择器实现元素显示隐藏

    初初认识jQuery的not选择器,想要实现的功能是,点击第一个div,显示第二个div,点击第一个div以外的地方,隐藏第二个div. 具体代码如下: <!DOCTYPE html> & ...