直接上代码吧

一:主窗口

/*#region SendChooseTargetTemplate 发送候选人主窗口模板*/
var SendChooseTargetTemplate = '';
SendChooseTargetTemplate += '<div id="hwsendChooseTarget_${UserId}" style="display:block" class="content_body">';
SendChooseTargetTemplate += ' <div class="content">';
SendChooseTargetTemplate += ' <div class="top">';
SendChooseTargetTemplate += ' <a href="#" class="back"><img src="images/pic_18.png" width="18" height="14"></a>选择接收人';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' <div class="main">';
SendChooseTargetTemplate += ' <div class="received">';
SendChooseTargetTemplate += ' <div class="received_menus">';
SendChooseTargetTemplate += ' <ul id="tab3">'; SendChooseTargetTemplate += '{{each List}}'; //开始循环显示 班级名称 等同于 {{tmpl($data) \'SendChooseTargetCidsTemplate\'}}'; //记得前台页面要预编译这个模板缓存哦 SendChooseTargetTemplate += ' <a href="#"><li onclick="setTab(3,${$index })" {{if $index==0}} class="now" {{/if}}>' +
' <div class="checkbox" onclick="homeworkCheckbox(\'cc\',this);"></div>${Cname}</li> </a>'; SendChooseTargetTemplate += '{{/each}}'; //结束 SendChooseTargetTemplate += ' </ul>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' <div class="received_list" id="tablist3">';
//循环班级,并且显示每个班级里面的学生Sid列表 开始 SendChooseTargetTemplate += ' {{tmpl($data) \'SendChooseTargetSidsTemplate\'}}'; //将数据,绑定到 预编译的模板里面 //循环班级,并且显示每个班级里面的学生Sid列表 开始
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' <div class="input">';
SendChooseTargetTemplate += ' <div class="select">已选择${AlreadySelectCount}人</div>';
SendChooseTargetTemplate += ' <a href="javascript:DisplayTab(\'tag15\')" class="send">完成</a>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += ' </div>';
SendChooseTargetTemplate += '';
/*#endregion*/

嵌套调用的模板

/*#region SendChooseTargetSidsTemplate 发送候选人主窗口模板===>每个班级下的Sid列表*/

var SendChooseTargetSidsTemplate = '{{each List}}';
SendChooseTargetSidsTemplate += ' <div class="tablist" style="display: {{if $index>0}}none{{else}}block{{/if}};">';
SendChooseTargetSidsTemplate += ' <div class="row">';
SendChooseTargetSidsTemplate += ' {{each Students}}';
SendChooseTargetSidsTemplate += ' <div class="rowcentent">';
SendChooseTargetSidsTemplate += ' <a href="#"><img src="${Sphoto}" width="73" height="73"></a><p>${Sname}</p>';
SendChooseTargetSidsTemplate += ' <div class="checkbox" onclick="myCheckbox(\'cc\',this);"></div>';
SendChooseTargetSidsTemplate += ' </div>';
SendChooseTargetSidsTemplate += ' {{/each}}'; SendChooseTargetSidsTemplate += ' </div>';
SendChooseTargetSidsTemplate += ' </div>';
SendChooseTargetSidsTemplate += '{{/each}}'; /*#endregion*/

二:前台html数据缓存,以及 模板预编译

 $(function () {
var demodata =
{
UserId: 10895,
AlreadySelectCount: 138,
List:
[
{
"Index": "0",
"Cid": "1",
"Cname": "101班",
"Check": "0", // 0表示1个都没有勾选 1表示至少勾选了1个 2表示全部勾选
"Cphoto": "images/ico/014.png",
"Students": [
{
"Sid": "s1",
"Sname": "周杰伦",
"Sphoto": "", //这里可能没有图片,那么我们显示的时候,还要判断是否显示默认图片
"Check": "0"
},
{
"Sid": "s2",
"Sname": "李宇春",
"Sphoto": "images/ico/001.png",
"Check": "0"
}
]
},
{
"Index": "1",
"Cid": "2",
"Cname": "102班",
"Check": "2", //0 0表示1个都没有勾选 1表示至少勾选了1个 2表示全部勾选
"Cphoto": "images/ico/014.png",
"Students": [
{
"Sid": "s201",
"Sname": "周笔畅",
"Sphoto": "images/ico/002.png",
"Check": "1"
},
{
"Sid": "s202",
"Sname": "存瑞",
"Sphoto": "images/ico/003.png",
"Check": "1"
}
]
},
{
"Index": "2",
"Cid": "3",
"Cname": "103班",
"Check": "1", //0表示1个都没有勾选 1表示至少勾选了1个 2表示全部勾选
"Cphoto": "images/ico/014.png",
"Students": [
{
"Sid": "s301",
"Sname": "卡拉克",
"Sphoto": "images/ico/005.png",
"Check": "1"
},
{
"Sid": "s302",
"Sname": "刘德华",
"Sphoto": "images/ico/006.png",
"Check": "1"
},
{
"Sid": "s303",
"Sname": "菲比",
"Sphoto": "images/ico/007.png",
"Check": "1"
},
{
"Sid": "s304",
"Sname": "董瑞",
"Sphoto": "images/ico/008.png",
"Check": "0"
}
]
}
]
};
//$.template("SendChooseTargetCidsTemplate", SendChooseTargetCidsTemplate);//班级列表
$.template("SendChooseTargetSidsTemplate", SendChooseTargetSidsTemplate);//班级下的学生列表 $.template("SendChooseTargetTemplate", SendChooseTargetTemplate); //把模板缓存 加入 数据,然后添加到容器里面
$.tmpl("SendChooseTargetTemplate", demodata).appendTo("#contentbody"); });

 

重点就是如何在一个 模板里面,嵌套调用另外一个模板(还是用 temp 来调用),如何传递数据 (使用data这个关键字)

参考网址 http://www.jb51.net/article/27747.htm

Jquery 模板插件 jquery.tmpl.js 的使用方法(2):嵌套each循环,temp调用(使用预编译的模板缓存)的更多相关文章

  1. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  2. jQuery滚动条插件 – jquery.slimscroll.js

    jquery.slimscroll.js插件是一个支持把内容放在一个盒子里面,固定一个高度,超出的则使用滚动.jquery.slimscroll.js不仅可以定义高度.宽度,还可以定义位置.滚动条大小 ...

  3. jQuery分页插件(jquery.page.js)的使用

    效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒   1.前端   首先html的head中引入相关css与js <lin ...

  4. Jquery 分页插件 Jquery Pagination

    Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ...

  5. JQuery模板插件-jquery.tmpl

    转载:https://www.cnblogs.com/whitewolf/archive/2011/10/09/2204185.html 在下面介绍一款jQuery的模板插件 tmpl,是由微软想jQ ...

  6. jQuery遮罩插件 jquery.blockUI.js

    Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...

  7. JQuery多媒体插件jQuery Media Plugin使用详解

    malsup jquery media plugin 该插件可以播放多种类型的多媒体文件包括:Flash, Quicktime, Windows Media Player, Real Player, ...

  8. jQuery国际化插件 jQuery.i18n.properties 【轻量级】

    jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web前端的国际化. 国际化英文单词为:Internationalization,又称i18n,“i”为单词的第 ...

  9. cocos 3.16 生成预编译库模板

    打开模板功能 不知道什么原因,cocos 3.16关闭了模板功能,因此使用cocos -h命令时,无法显示gen-templates参数. 打开的方式也挺简单,打开tools/cocos2d-cons ...

随机推荐

  1. C++对MS SQL Server的操作

    今天因为在做一份C++的期末作业,突然想用C++来链接数据库,实现数据的重复利用,所以就作死去百度搜了一下. 更巧的事情是,一搜居然还有很多搜索结果,然后就照着做了. 做的过程很艰辛,就不一一诉说了, ...

  2. InnoDB与UUID

    CakePHP本身有一个uuid实现,所以一直以来,我都在尝试使用uuid做主键的可能性.虽然MySQL是我最常用的数据库,但是和 auto_increment_int主键相比,我对uuid主键更有好 ...

  3. centos 虚拟机安装过程

    centos装过好几次了,也装过好几次fedora,感觉centos更灵活些,这次我装了最简洁的centos,然后通过yum命令安装了各种需要的命令和软件,编译了phpredis.redis.和php ...

  4. ZedGrap控件绘制图表曲线

    问题描述: 使用C#中ZedGrap控件绘制图表曲线图 ZedGrap 介绍说明:     安装ZedGrap控件 ZedGraph控件dll文件: 添加ZedGraph控件,首先在新建立的C#图像工 ...

  5. [nowCoder] 两个不等长数组求第K大数

    给定两个有序数组arr1和arr2,在给定一个整数k,返回两个数组的所有数中第K小的数.例如:arr1 = {1,2,3,4,5};arr2 = {3,4,5};K = 1;因为1为所有数中最小的,所 ...

  6. struts.properties配置详解(转)

    Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之 外,Struts 2框架还包含     s ...

  7. SVN库实时同步设置

    为了安全起见,SVN服务器除了做定时全量备份和增量备份以外,如条件允许,可做实时备份. 这需要2台机器,一台是master server,另一台做mirror server.master做主服务,mi ...

  8. linux故障救援

    今天手贱,误操作将/usr/lib整个文件夹都删了.但是系统内还有很多重要的文件和数据,不敢贸然重装系统. 弄了个u盘启动. 一开始整个系统只有一个分区,原系统装在这个分区里,我用u盘启动后,用分区管 ...

  9. 【redis】06Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存

    上节课详细讲解了redis数据库的常用命令,以及redis数据库高级应用当中的, 安全性,跟咱们的主从复制, 这节课呢,咱们继续来讲咱们的高级应用, 首先来看一下咱们的事务处理, 事务处理 我前面说过 ...

  10. sql over()---转载

    1.使用over子句与rows_number()以及聚合函数进行使用,可以进行编号以及各种操作.而且利用over子句的分组效率比group by子句的效率更高. 2.在订单表(order)中统计中,生 ...