让jquery.tmpl.js支持index序号
在写Web程序时,想简单处理会使用JS模板,常用的是Jquery的jquery.tmpl.js插件。整个插件还是比较好用的,后续有机会结合实际应用案例,分享下应用方法。
本次文章想分享的一点是其中的一个很小的细节:支持行标index。
具体的使用场景是:通过表格展示数据,同时第一列为序号,会存在删除、新增行的按钮操作。
<!DOCTYPE html>
<html>
<head>
<script src="../_common/jquery-1.12.2.min.js"></script>
<script src="../_common/jquery.tmpl.min.js"></script>
</head>
<body>
<table id="list">
<tr class="tableHead">
<td>序号</td>
<td>名称</td>
<td>代码</td>
<td>类型</td>
</tr>
</table>
<script id="tmp" type="text/x-jquery-tmpl">
<tr>
<td>${Number(id)+}</td>
<td>${name}</td>
<td>${code}</td>
<td>${type}</td>
</tr>
</script>
<script type="text/javascript">
$(document).ready(function () {
var list = [
{ id:"", name: "javascript", code: "001", type: "web" },
{ id:"", name: "asp.net", code: "004", type: "server" },
{ id:"", name: "sql", code: "005", type: "db" }
];
$("#tmp").tmpl(list).appendTo("#list");
});
</script>
</body>
</html>
如上,如果要实现行序号,则需要在数据集合中加入一个属性返回行号,这样就会导致非常麻烦。当存在删除或新增行时,若要刷新展示,还需要刷新数据的id属性,不方便操作。其实如果能够利用table的rowindex或者其他的方式,可以较好的利用dom属性或数组index来处理,那就会方便很多了。
基于此思路,我们改造jquery.tmpl.js的tmpl函数。如下图,对于未压缩的插件源码,处理如下:

为了避免数据集合中存在index对象,故特意加了一个$以作区分,使用时用$index属性进行取值即可。
若是需要改造jquery.tmpl.min.js,由于做了代码混淆,搜索map函数,第一个调用的地方按照如上逻辑调整即可。
调整后的调用方式:
<!DOCTYPE html>
<html>
<head>
<script src="../_common/jquery-1.12.2.min.js"></script>
<script src="../_common/jquery.tmpl.min.js"></script>
</head>
<body>
<table id="list">
<tr class="tableHead">
<td>序号</td>
<td>名称</td>
<td>代码</td>
<td>类型</td>
</tr>
</table>
<script id="tmp" type="text/x-jquery-tmpl">
<tr>
<td>${$index+}</td>
<td>${name}</td>
<td>${code}</td>
<td>${type}</td>
</tr>
</script>
<script type="text/javascript">
$(document).ready(function () {
var list = [
{ name: "javascript", code: "001", type: "web" },
{ name: "asp.net", code: "004", type: "server" },
{ name: "sql", code: "005", type: "db" }
];
$("#tmp").tmpl(list).appendTo("#list");
});
</script>
</body>
</html>
如上为新的调用方式,是不是方便了很多。
让jquery.tmpl.js支持index序号的更多相关文章
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
jquery.tmpl.js 是一个模板js ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...
- MVC - 11(下)jquery.tmpl.js +ajax分页
继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com ...
- PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例
PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例,在手机上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度,在电脑上鼠标滚轮为缩放,双击则顺时针旋转90度. 下面让我们来看 ...
- 修改 jquery.validate.js 支持非form标签
尝试使用markdown来写一篇blog,啦啦啦 源代码传送门:github 在特殊情况下我们使用jquery.validate.js对用户输入的内容做验证的时候,表单并不是一定包含在form之中,有 ...
- jquery.tmpl.js 模板引擎用法
1.0 引入: <script src="/js/jquery.tmpl.min.js"></script> 2.0 模板: <script type ...
- 修改二维码生成插件jquery.qrcode.js支持加入自定义LOGO
1,将jquery.qrcode.min.js和jquery添加到您的网页中 <script src="jquery.min.js"></script> & ...
- Jquery 模板插件 jquery.tmpl.js 的使用方法(2):嵌套each循环,temp调用(使用预编译的模板缓存)
直接上代码吧 一:主窗口 /*#region SendChooseTargetTemplate 发送候选人主窗口模板*/ var SendChooseTargetTemplate = ''; Send ...
- jquery.tmpl.js使用外部 jQuery Template文件
$.get('/js/templates/filename.html', function(template) { $.tmpl(template, data).appendTo('#whatever ...
- jquery tmpl 详解
官方解释对该插件的说明:将匹配的第一个元素作为模板,render指定的数据,签名如下: .tmpl([data,][options]) 其中参数data的用途很明显:用于render的数据,可以是任意 ...
随机推荐
- NVDIMM典型应用及技术发展
1.典型应用之全系统保护 全系统保护采用超级内存作为系统主存.在系统异常掉电时,将整个系统的运行状态(包括CPU,芯片组,其他外设以及所有进程的信息)存入超级内存.在供电恢复后,利用超级内存中的数据, ...
- MDK4.6和J-LINK调试出现问题,软件自动关闭,在网上收集整理的解决办法
MDK4.6配J-LINK调试时提示升级,升级完成后,弹出下图提示框后,软件自动退出. 提示原因:由于MDK4.6能识别山寨JLINK导致.网络牛人分析如下: 今天将Keil MDK升级到了V4.54 ...
- MyBatis学习总结_10_批量操作
一.mybatis中的批量操作 批量操作核心就是一次传入多个数据然后进行相关操作,增删改查中掌握其中一个其他的也不成问题 1.最新在做的短信平台,要批量插入群发的短信记录: 当然批量操作还有:批 ...
- Centos下修改启动项和网络配置
1.Centos默认是从图形界面启动,需要较多的资源,为了节省资源可以从命令行启动.修改方法如下: /etc/inittab文件,把 代码: id:5:initdefault:这一行,修改成 代码: ...
- Android 设置闹铃步骤和基础代码
主要分三步: 1. 设置闹铃时间; 2. 接收闹铃事件广播; 3. 重开机后重新计算并设置闹铃时间; 1. 设置闹铃时间(毫秒) private void setAlarmTime(Context ...
- Oracle ->> Oracle下查看实际执行计划的方法
也许有很多种方法,这里只是书上学到的一种方法 with a as ( order by grp_factor) t ) select b.id, a.grp_factor )b --use v$sql ...
- spry菜单栏(二)
自定义选项卡式面板构件 尽管使用属性检查器可以简化对选项卡式面板构件的编辑,但是属性检查器并不支持自定义的样式设置任务.您可以修改选项卡式面板构件的 CSS 规则,并创建根据自己的喜好设置样式的构件. ...
- extern的意思
还是在重温C++,看到extern的意思,觉得很有必要记下来. extern是用来干什么的大家想必都是很明白的. 如果有个全局变量,或者其他文件的全局变量,要在本文件或函数中使用,可以通过extern ...
- js中的cookie使用
在网上找到的资料,收藏一下 function getCookies(name) { var arr = document.cookie.match(new RegExp("(^| )&quo ...
- asp程序调试
最近一直在开发asp的接口.调试一个很大的工作量.每次都让人疯狂.asp当中的提取方式时,因为没有智能提示能工具,很容易丢掉参数.而且,因为是弱类型,可以直接定义使用,不强制声明,看似很方便.很容易出 ...