使用jquery的tmpl动态加载数据模板
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。
这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML 不划算,而在 web 传输方面,现在更多的是使用 JSON 而不是 XML。
浏览器端根据 JSON 生成 HTML 有个很苦恼的地方就是,结构不复杂的时候还好,结构一复杂,就想死了,需要很小心很小心地写出几乎无法维护的 JavaScript 代码。
因此一些用模版生成HTML的的框架相继出现jquery.tmpl 就是其中的一种,下面我们来详细介绍下jquery.tmpl的用法
jquery.tmpl的几种常用标签分别有:
${}, {{each}}, {{if}}, {{else}}, {{html}}
不常用标签
{{=}},{{tmpl}} and {{wrap}}.
${}等同与{{=}}是输出变量 ${}里面还可以放表达式 (=和变量之间一定要有空格,否则无效)
示例:
![](/assets/blank.gif)
<div id="div_demo"> </div> <script id="demo" type="text/x-jquery-tmpl"><div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{= Name}}</span><span style="margin-left:10px;">${Number(Num)+1}</span><span style="margin-left:10px;">${Status}</span></div> </script> <script type="text/javascript">var users = [{ ID: 'think8848', Name: 'Joseph Chan', Num: '1', Status: 1 }, { ID: 'aCloud', Name: 'Mary Cheung', Num: '2'}];$("#demo").tmpl(users).appendTo('#div_demo'); </script>
![](/assets/blank.gif)
{{each}} 提供循环逻辑,$value访问迭代变量 也可以自定义迭代变量(i,value)
示例:
![](/assets/blank.gif)
<div id="div_each"> </div> <script id="each" type="text/x-jquery-tmpl"> <h3>users</h3> {{each(i,user) users}}<div>${i+1}:{{= user.name}}</div> {{if i==0}}<h4>group</h4> {{each(j,group) groups}}<div>${group.name}</div> {{/each}} {{/if}} {{/each}}<h3>depart</h3> {{each departs}}<div>{{= $value.name}}</div> {{/each}} </script> <script type="text/javascript">var eachData = { users: [{ name: 'jerry' }, { name: 'john'}], groups: [{ name: 'mingdao' }, { name: 'meihua' }, { name: 'test'}], departs: [{ name: 'IT'}] };$("#each").tmpl(eachData).appendTo('#div_each'); </script>
![](/assets/blank.gif)
{{if }} {{else}}提供了分支逻辑 {{else}} 相当于else if
示例:
![](/assets/blank.gif)
<div id="div_ifelse"></div> <script id="ifelse" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{= Name}}</span>{{if Status}}<span>Status${Status}</span> {{else App}}<span>App${App}</span> {{else}}<span>None</span> {{/if}}</div> </script> <script type="text/javascript">var users = [{ ID: 'think8848', Name: 'Joseph Chan', Status: 1, App: 0 }, { ID: 'aCloud', Name: 'Mary Cheung', App: 1 }, { ID: 'bMingdao', Name: 'Jerry Jin'}];$("#ifelse").tmpl(users).appendTo('#div_ifelse'); </script>
![](/assets/blank.gif)
{{html}} 输出变量html,但是没有html编码,适合输出html代码
实例
![](/assets/blank.gif)
<div id="div_html"></div> <script id="html" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{= Name}}</span>${html}{{html html}}</div> </script> <script type="text/javascript">var user = { ID: 'think8848', Name: 'Joseph Chan', html: '<button>html</button>' };$("#html").tmpl(user).appendTo('#div_html'); </script>
![](/assets/blank.gif)
{{tmpl}} 嵌套模版
实例
![](/assets/blank.gif)
<div id="tmpl"></div> <script id="tmpl1" type="text/x-jquery-tmpl"><div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{tmpl($data) '#tmpl2'}}</span></div> </script> <script id="tmpl2" type="type/x-jquery-tmpl">{{each Name}}${$value} {{/each}} </script> <script type="text/javascript">var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];$("#tmpl1").tmpl(users).appendTo('#tmpl'); </script>
![](/assets/blank.gif)
{{wrap}},包装器
实例
![](/assets/blank.gif)
<div id="wrapDemo"></div> <script id="myTmpl" type="text/x-jquery-tmpl">The following wraps and reorders some HTML content:{{wrap "#tableWrapper"}}<h3>One</h3><div>First <b>content</b></div><h3>Two</h3><div>And <em>more</em> <b>content</b>...</div> {{/wrap}}</script> <script id="tableWrapper" type="text/x-jquery-tmpl"><table cellspacing="0" cellpadding="3" border="1"><tbody><tr>{{each $item.html("h3", true)}}<td>${$value}</td> {{/each}}</tr><tr>{{each $item.html("div")}}<td>{{html $value}}</td> {{/each}}</tr></tbody></table></script><script type="text/javascript">$(function () {$('#myTmpl').tmpl().appendTo('#wrapDemo');});</script>
![](/assets/blank.gif)
$data $item $item代表当前的模板;$data代表当前的数据。
实例:
![](/assets/blank.gif)
<div id="div_item_data"></div> <script id="item_data" type="text/x-jquery-tmpl"> <div style="margin-bottom:10px;"><span>${$data.ID}</span><span style="margin-left:10px;">${$item.getName(" ")}</span></div> </script> <script type="text/javascript">var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];$("#item_data").tmpl(users,{getName: function (spr) {return this.data.Name.join(spr);}}).appendTo('#div_item_data'); </script>
![](/assets/blank.gif)
$.tmplItem()方法,使用这个方法,可以获取从render出来的元素上重新获取$item
实例
<script type="text/javascript">$('#demo').delegate('div', 'click', function () {var item = $.tmplItem(this);alert(item.data.Name);}); </script>
使用jquery的tmpl动态加载数据模板相关推荐
- 【jquery】Chosen.jquery.js 插件动态加载数据问题
Chosen.jquery.js目前版本v1.6.2,官方文档链接https://harvesthq.github.io/chosen/ 插件有一个css文件和一个js文件,都命名为Chosen,引入 ...
- ASP.NET MVC动态加载数据
ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: <table><tr><th styl ...
- JQuery-weui city-picker动态加载数据
JQuery-weui city-picker动态加载数据 JQuery-weui city-picker 加载三级菜单 页面代码: <html><head><meta ...
- jqweui的picker动态加载数据
大家好,我是烤鸭: jqweui的picker动态加载数据 jqweui是jquery对weui的拓展开发,picker就是其中的一个拓展组件, 1. 先附上官网显示地址和代码: http:// ...
- 百度echart柱图、折线图、饼图、Map类型等类似视图的动态加载数据
这几天接触的一个项目需要使用到百度的echart,所以简单查找并实验了几款比较简单且适用性较广的例子,做了几个简单的Demo,一来是对echart有所了解,二来也是记录一下,方便以后进一步的优化. 首 ...
- iscroll动态加载数据完美解决方案
iscroll动态加载数据完美解决方案 参考文章: (1)iscroll动态加载数据完美解决方案 (2)https://www.cnblogs.com/ShoneH/p/5253758.html (3 ...
- 如何在 InfoPath 2003 表单中动态加载数据
转自微软:http://support.microsoft.com/kb/896451/zh-cn 概要 简介 更多信息 创建新的虚拟目录 设计 Microsoft Office InfoPath 2 ...
- python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...
学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选. 但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两 ...
- echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava
[ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...
最新文章
- 用 Linux 的 watch 命令观察命令和任务
- Android Studio内存优化
- Sharepoint学习笔记 –架构系列—Sharepoint的客户端对象模型(Client Object Model)
- extlink.php,ExtJs 学习笔记基础篇 Ext组件的使用_extjs
- Python中range对象的使用以及打印九九乘法表
- 学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!附下载链接!...
- Oleans集群之Consul再解释
- json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON
- 设z=〖(1+xy)〗^y,求 ∂z/∂y
- Linux单用户下提示权限不够,Linux_/dev/null 权限不足,/dev/null文件设备的权限不对, - phpStudy...
- 机器学习集成模型学习——Bagging集成学习(三)
- inno setup相关 (二)
- windows批处理运行java程序
- 公式推导 11-21
- 【仿人机器人】机器人基础介绍
- 十六进制颜色与RGB颜色对照表
- 如何用 Stata 做调节中介效应检验?
- POTN——新时代网络融合的必经之路
- 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...
- 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)
热门文章
- Linux 高效使用 alias 总结
- (一)linux基本命令
- 学会ipconfig,ping,netstat,tracert,pathping,arp、net及netsh等常用网络cmd命令 2021-4-11
- 短视频封面怎么做吸引人?分享三种封面类型,让人看了都想点
- c语言float可以作为switch,switch可接受的变量数据类型
- jQuery之制作简单的轮播图效果
- 浅谈android中的图片处理之基本绘图(一)
- 优化算法SGD/ASGD/AdaGrad/Adadelta/RMSprop/Adam/Adamax/SparseAdam/L-BFGS/Rprop
- springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目(笔记,帮填坑)
- springclound 链路追踪sleuth