4. 利用append()方法在jQuery中动态定义和生成EasyUI控件。
前面几个实例采用HTML标签语句定义控件,但有时也有一些控件由于事先是不确定的,需要在程序运行过程中动态生成,为此本例介绍append()方法,在javascript语句中动态定义EasyUI控件,具体方法和程序如下。
①在页面预留一个层,取名为main。所有其他动态生成的控件均嵌套在这个层之内。
<div id="main" style="margin:2px 2px 2px 2px;">
②在<script>…</script>之间编写程序。先定义一个变量(如str),把需要生成控件的HTML语句保存到这个变量中,然后使用append()方法添加到相应的父类容器中去。
例如,在main层中添加一个表单类(panel)控件的语句如下:
var str='<div class=“easyui-panel" id="myForm1" title=" 学生信息编辑" style="position:relative; background:#fafafa;" data-options="iconCls:\'panelIcon\'" >';
$("#main").append($(str)); //在main容器下嵌入一个表单控件myForm1
同样地,在表单myForm1中添加一个fieldset类控件的语句如下:
str='<fieldset id="myFieldset1" style="position:absolute; top:10px; left:10px; width:300px; height:210px; padding: 2px 0px 0px 16px; border:1px groove" ><legend>基本信息</legend></fieldset>';
$("#myForm1").append($(str)); //在myForm1容器下嵌入一个fieldset字段集控件
推而广之,各类控件都可以通过这种方式动态生成。又如在myFieldset1字段集容器中添加两个label和textbox文本框控件,其语句如下:
str='<label id="stuid_label">学号:</label>';
str+='<div id="stuid_div"><input class=“easyui-textbox" type="text" id="stuid"></input></div>\n';
str+='<label id="stuname_label">姓名:</label><div id="stuname_div"><input class=“easyui-textbox" type="text" id="stuname"></input></div>\n';
$("#myFieldset1").append($(str));
③与实例3相同,在动态添加和生成控件之后,可以使用jQuery语句设置各个控件的属性。
本例完整代码见程序example04_appendcontrols.jsp中。
主要知识点:
动态添加控件的方法:$("#parentid").append($(str));。这里,parentid为父类容器的ID,str变量为符合HTML语法的控件定义语句,str需要用括号和$引导。
思考题:
1.在动态定义各个控件时,有哪些代码具有相似性或重复性?如何使用函数动态定义控件?
2.构造一个函数用于动态定义textbox控件,这个函数需要几个参数?参考下列API链接地址,查看相关控件的属性。
http://www.jEasyUI.com/demo/main/
http://www.jEasyUI.com/documentation/index.php