jquery easyui 之 parser解析器

引入必要的文件:

引入 jQuery 核心库,这里采用的是 2.0

<script type="text/javascript" src="easyui/jquery.min.js"></script>

引入 jQuery EasyUI 核心库,这里采用的是 1.3.6

<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>

引入 EasyUI 中文提示信息

<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>

引入自己开发的 JS 文件

<script type="text/javascript" src="js/index.js"></script>

引入 EasyUI 核心 UI 文件 CSS

<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />

引入 EasyUI 图标文件

<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />

加载UI组件的方式:

1、使用class方式加载

使用 class 加载,格式为:easyui-组件名

<div class="easyui-dialog" id="box" title="标题" style="width:400px;height:200px;">

内容部分

</div>

示例:

    <!DOCTYPE html>  
    <html>  
    <head>  
    <title>jQuery Easy UI</title>  
    <meta charset="UTF-8" />  
    <script type="text/javascript" src="easyui/jquery.min.js"></script>  
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>  
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js" ></script>  
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />  
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />  
    </head>  
    <body>  
    <div id="box">  
        <div class="easyui-dialog" title="标题" style="width:400px;height:200px">  
            内容部分      
        </div>  
    </div>  
    </body>  
    </html>  

PS:使用了规定的格式就可以生成一个 UI 组件,这是由于 jQuery EasyUI 的一个解析器(Parser)的起到了作用。解析之后,从 Firebug 里面可以看到 

UI 组件变化后的HTML。

2、使用JS调用加载

$('#box').dialog();

示例:

    <!DOCTYPE html>  
    <html>  
    <head>  
    <title>jQuery Easy UI</title>  
    <meta charset="UTF-8" />  
    <script type="text/javascript" src="easyui/jquery.min.js"></script>  
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>  
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js" ></script>  
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />  
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />  
    <script>  
        // 使用js调用加载的方式  
        $(function(){  
            $("#box").dialog();  
        })  
    </script>  
    </head>  
    <body>  
        <div  id="box"  title="标题" style="width:400px;height:200px">  
            内容部分  
        </div>  
    </body>  
    </html>  

PS:一般推荐使用第二种 JS 调用加载,因为一个 UI 组件有很多属性和方法,如果使用 class 的用法将极大的不方便。并且根据 JS 和 HTML 分离的原则,

第二种提高了代码的可读性。

3、使用easyload.js智能加载

//删除 jQuery EasyUI 的 JS 核心文件及 CSS,引入 easyloader.js 文件

<script type="text/javascript" src="easyui/easyloader.js"></script>

//JS 代码

easyloader.load('dialog', function () {

$('#box').dialog();

});

示例:

    <!DOCTYPE html>  
    <html>  
    <head>  
    <title>jQuery Easy UI</title>  
    <meta charset="UTF-8" />  
    <script type="text/javascript" src="easyui/jquery.min.js"></script>  
    <script type="text/javascript" src="easyui/easyloader.js"></script>  
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js" ></script>  
    <script>  
        //使用easyload.js智能加载(按需加载)  
        $(function(){  
            easyloader.load('dialog',function(){  
                $("#box").dialog();  
            })  
        })  
    </script>  
    </head>  
    <body>  
        <div  id="box"  title="标题" style="width:400px;height:200px">  
            内容部分  
        </div>  
    </body>  
    </html>  

四、Parser解析器使用场景及注意事项

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

析器,本文主要讨论一下,什么情况下会用到它,如何使用。

1、自动调用parser:

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

一次,而且是渲染整个页面。

2、手动调用parper:

当页面DOM已经装载完毕,我们通过JavaScript代码再去创建class属性为easyui相应值的节点的时候,那么该节点不会被渲染,因为parser只是在页面装载完的

时候渲染一下整个页面,而不会一直监视着整个页面。所以需要我们手动调用parser去渲染。

parser示例:

    <!DOCTYPE html>  
    <html>  
    <head>  
    <title>parserDemo</title>  
    <meta charset="UTF-8" />  
    <script type="text/javascript" src="easyui/jquery.min.js"></script>  
    <script type="text/javascript" src="easyui/easyloader.js"></script>  
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js" ></script>  
    <script>  
        $(function(){  
            //为什么我们只用class属性的时候就能加载UI组件,因为页面在DOM装载完成后会自动执行一次$.parser.parse();  
            $.parser.onComplete=function (){  
                alert('DOM装载完毕,自动解析,完成');  
            }  
        })  
      
        function f (){  
            /**  
            在DOM加载之后手动指定class属性是不能够完成渲染的,因为parser只是在DOM装载完成  
            后解析一次,不会一直监视着DOM页面的变化的,所以下面还要显式调用$.parser.parse();  
            */  
            $("#box").attr("class","easyui-dialog");  
      
            //$.parser.parse("#box"); 注意:这个是不好使的,因为parse()带参数的时候渲染的是JQ选择器指定元素的父类  
            $.parser.parse(("#p_box"));  
      
            //它还有个回调函数  
            $.parser.onComplete=function (){  
                alert('手动渲染解析完成');  
            }  
        }  
    </script>  
    </head>  
    <body>  
        <div id="p_box">  
            <div id="box"  title="标题" style="width:400px;height:200px">  
                内容部分  
            </div>  
        </div>  
      
        <input type="button" value="手动渲染" οnclick="f()">  
    </body>  
    </html>  


parser 是jquery easyui中的解析器,页面中class就是用它来渲染。

自动渲染

页面加载过程:

  1. 先装载HTML页面文档元素

  2. 然后调用$().ready(function(){})

  3. 最后调用parser渲染页面


手动渲染

通过DOM操作输出HTML(easyui)元素信息,那easyui页面不会初始化,只显示原有的HTML代码

<script type="text/javascript">
 
$().ready(function(){
    document.getElementById("info").innerHTML='<div class="easyui-accordion" id="tt"><div title="title1">1</div><div title="title2">2</div></div>';
});
</script>
</head>
<body>
<div  id="info">
</div>
</body>
效果只是1 2,不会有格式

需要手动渲染:在DOM操作后添加

<script type="text/javascript">
$().ready(function(){
    document.getElementById("info").innerHTML='<div class="easyui-accordion" id="tt"><div title="title1">1</div><div title="title2">2</div></div>';
    $.parser.parse('#info'); // 解析某个具体节点
    //$.parser.parse(); // 解析整个页面
});
</script>
</head>
<body>
<div  id="info">
</div>
</body>
效果


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值