jQuery .tmpl() 用法示例介绍


Posted in Javascript onAugust 21, 2014

动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。

这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML 不划算,而在 web 传输方面,现在更多的是使用 JSON 而不是 XML。

浏览器端根据 JSON 生成 HTML 有个很苦恼的地方就是,结构不复杂的时候还好,结构一复杂,就想死了,需要很小心很小心地写出几乎无法维护的 JavaScript 代码。

如同为解决 PHP 拼数据这方面的问题而有了 Smarty 这些模版,JavaScript 也可以利用模版来解决这些问题,比如基于 jQuery 的 jquery.tmpl,现在已经被接受为官方的模版插件了。详细的 API 在 jQuery 的 Templates 里,内置的 demo 也尽情地演示了各种用法。

就我自己的几次使用,感觉很不错,用更加直观方面的 HTML 写法而不是 JavaScript 拼凑 来写结构,然后用 JSON 变量来占位的方式来填充数据,代码看起来好多了。

Tmpl提供了几种tag:

${}:等同于{{=}},是输出变量,通过了html编码的。
{{html}}:输出变量html,但是没有html编码,适合输出html代码。
{{if }} {{else}}:提供了分支逻辑。
{{each}}:提供循环逻辑,$value访问迭代变量。

jquery tmpl的使用方法:

模板定义:

方法一:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
<li> 
<b>${Name}</b> (${ReleaseYear}) 
</li> 
</script>

方法二:

function makeTemplate(){ 
var markup='<li><b>${Name}</b> (${ReleaseYear})</li>‘; 
$.template(“movieTemplate”, markup); 
}

DATA:

var movies = [ 
{ Name: "The Red Violin", ReleaseYear: "1998" }, 
{ Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
{ Name: "The Inheritance", ReleaseYear: "1976" } 
];

Script:

$( "#movieTemplate" ).tmpl( movies ) 
.appendTo( "#movieList" );

实例1:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script> 
</head> 
<body> 

<ul class="param-list"></ul> 

<script type="text/x-jquery-tmpl" id="new-param-tmpl"> 
<li rel="${num}"> 
<input type="text" name="key[${num}]" value="${key}" placeholder="key" /> = 
<input type="text" name="value[${num}]" value="${value}" placeholder="value" /> 
<button type="button" class="button small remove-param"><img src="http://mediacdn.disqus.com/1338845651/images/v3/icon/16/69.png" height="12" alt=""/></button> 
<button type="button" class="button small add-param"><span><img src="http://mediacdn.disqus.com/1338845651/images/v3/icon/16/13.png" height="12" alt=""/></button> 
</li> 
</script> 

<script> 
$(function(){ 
function addParam(key, value) { 
var param_list = $('.param-list'); 
var num = param_list.find('li').length; 

// build a template to clone the current row 
var built = $('#new-param-tmpl').tmpl({ 
num: num, 
key: key || '', 
value: value || '', 
}); 
if (key) param_list.prepend(built); 
else param_list.append(built); 

param_list.find('li:not(:last) .add-param').hide(); 
param_list.find('li:last .add-param').show(); 
param_list.find('li:not(:last) .remove-param').show(); 
param_list.find('li:last .remove-param').hide(); 
} 

// bind events 
$('.param-list .remove-param').live('click', function(){ 
$(this).parent().remove(); 
return false; 
}); 
$('.param-list .add-param').live('click', function(){ 
addParam(); 
return false; 
}); 

addParam(); 
})
</script> 
</body> 
</html>

实例2

<ul id="movieList"></ul> 

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
<li><b>${Name}</b> (${ReleaseYear})</li> 
</script> 

<script type="text/javascript"> 
var movies = [ 
{ Name: "The Red Violin", ReleaseYear: "1998" }, 
{ Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
{ Name: "The Inheritance", ReleaseYear: "1976" } 
]; 

// Render the template with the movies data and insert 
// the rendered HTML under the "movieList" element 
$( "#movieTemplate" ).tmpl( movies ) 
.appendTo( "#movieList" ); 
</script>
Javascript 相关文章推荐
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
js Date概念详细介绍
Nov 22 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
纯javascript代码实现计算器功能(三种方法)
Sep 07 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
基于jQuery实现一个marquee无缝滚动的插件
Mar 09 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
微信小程序报错:this.setData is not a function的解决办法
Sep 27 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
jQuery控制TR显示隐藏的三种常用方法
Aug 21 #Javascript
jQuery截取指定长度字符串代码
Aug 21 #Javascript
jquery实现的下拉和收缩效果示例
Aug 21 #Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 #Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 #Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 #Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 #Javascript
You might like
php获取网页内容方法总结
2008/12/04 PHP
PHP使用递归生成文章树
2015/04/21 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
Python去除字符串两端空格的方法
2015/05/21 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python编写一个优美的下载器
2018/04/15 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
flask应用部署到服务器的方法
2019/07/12 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
写给女朋友的道歉信
2014/01/08 职场文书
青年教师培训方案
2014/02/06 职场文书
食品销售计划书
2014/04/26 职场文书
物资采购方案
2014/06/12 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
苏州园林导游词
2015/02/03 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
雷锋的故事观后感
2015/06/10 职场文书
行政处罚告知书
2015/07/01 职场文书