让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的数据,可以是任意 ...
随机推荐
- 老是出现dispolse 找不到合适的方法来重写
复制到输出目录:不复制 生成操作:编译
- PHP-用ThinkPHP和Bootstrap实现用户登录设计
一.目标 1.用ThinkPHP和Bootstrap实现用户登录设 2.初步界面如下 二.用到的工具及框架 1.ThinkPHP 2.Bootstrap 3.Subline 三.开发环境搭建 1.下载 ...
- Centos下修改启动项和网络配置
1.Centos默认是从图形界面启动,需要较多的资源,为了节省资源可以从命令行启动.修改方法如下: /etc/inittab文件,把 代码: id:5:initdefault:这一行,修改成 代码: ...
- linux 命令案例学习——文件搜索
两个搜索文件的工具 locate ——仅仅通过文件名查找文件 find ——依据文件的各种属性在既定目录(包括子目录)里查找 一个通常与文件搜索命令一起使用.处理搜索结果文件列表的命令 xa ...
- iTunes获取下载的安装包
打开iTunes, 偏好设置,选择高级,即可找到文件路径
- 等额本息Vs等额本金
1:贷款种类一旦选择不能改变.2:你提前还款的全部属于本金部分,若能一次性归还本金只需付清当月月息即可[不按年利率计算而是月利率],与你归还的本金违约金[设:提前还款10万*X.XXX%=违约金,具体 ...
- 安装SQL2008的时候 出现System.Configuration.ConfigurationErrorsException: 创建 userSettings/Microsoft.SqlServe
System.Configuration.ConfigurationErrorsException: 创建 userSettings/Microsoft.SqlServer.Configuration ...
- HDU 1950 Bridging signals
那么一大篇的题目描述还真是吓人. 仔细一读其实就是一个LIS,还无任何变形. 刚刚学会了个二分优化的DP,1A无压力. //#define LOCAL #include <iostream> ...
- Excel文件操作方式比较
C++读取Excel的XLS文件的方法有很多,但是也许就是因为方法太多,大家在选择的时候会很疑惑. 由于前两天要做导表工具,比较了常用的方法,总结一下写个短文, 1.OLE的方式 这个大约是最常用的方 ...
- UIView的user Interaction Enabled属性
A Boolean value that determines whether user events are ignored and removed from the event queue. 译: ...