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

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

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

因此一些用模版生成HTML的的框架相继出现jquery.tmpl 就是其中的一种,下面我们来详细介绍下jquery.tmpl的用法

jquery.tmpl的几种常用标签分别有:

${}{{each}}{{if}}{{else}}{{html}}

不常用标签

{{=}},{{tmpl}} and {{wrap}}.

${}等同与{{=}}是输出变量 ${}里面还可以放表达式 (=和变量之间一定要有空格,否则无效)

示例:

<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>

{{each}} 提供循环逻辑,$value访问迭代变量 也可以自定义迭代变量(i,value)

示例:

<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>

{{if }} {{else}}提供了分支逻辑 {{else}} 相当于else if

示例:

<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>

{{html}} 输出变量html,但是没有html编码,适合输出html代码

实例

<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>

{{tmpl}} 嵌套模版

实例

<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>

{{wrap}},包装器

实例

<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>

$data $item $item代表当前的模板;$data代表当前的数据。

实例:

<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>

$.tmplItem()方法,使用这个方法,可以获取从render出来的元素上重新获取$item

实例

<script type="text/javascript">$('#demo').delegate('div', 'click', function () {var item = $.tmplItem(this);alert(item.data.Name);});
</script>

使用jquery的tmpl动态加载数据模板相关推荐

  1. 【jquery】Chosen.jquery.js 插件动态加载数据问题

    Chosen.jquery.js目前版本v1.6.2,官方文档链接https://harvesthq.github.io/chosen/ 插件有一个css文件和一个js文件,都命名为Chosen,引入 ...

  2. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: <table><tr><th styl ...

  3. JQuery-weui city-picker动态加载数据

    JQuery-weui city-picker动态加载数据 JQuery-weui city-picker 加载三级菜单 页面代码: <html><head><meta ...

  4. jqweui的picker动态加载数据

    大家好,我是烤鸭: jqweui的picker动态加载数据 jqweui是jquery对weui的拓展开发,picker就是其中的一个拓展组件, 1.    先附上官网显示地址和代码: http:// ...

  5. 百度echart柱图、折线图、饼图、Map类型等类似视图的动态加载数据

    这几天接触的一个项目需要使用到百度的echart,所以简单查找并实验了几款比较简单且适用性较广的例子,做了几个简单的Demo,一来是对echart有所了解,二来也是记录一下,方便以后进一步的优化. 首 ...

  6. iscroll动态加载数据完美解决方案

    iscroll动态加载数据完美解决方案 参考文章: (1)iscroll动态加载数据完美解决方案 (2)https://www.cnblogs.com/ShoneH/p/5253758.html (3 ...

  7. 如何在 InfoPath 2003 表单中动态加载数据

    转自微软:http://support.microsoft.com/kb/896451/zh-cn 概要 简介 更多信息 创建新的虚拟目录 设计 Microsoft Office InfoPath 2 ...

  8. python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...

    学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选. 但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两 ...

  9. echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava

    [ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...

最新文章

  1. 用 Linux 的 watch 命令观察命令和任务
  2. Android Studio内存优化
  3. Sharepoint学习笔记 –架构系列—Sharepoint的客户端对象模型(Client Object Model)
  4. extlink.php,ExtJs 学习笔记基础篇 Ext组件的使用_extjs
  5. Python中range对象的使用以及打印九九乘法表
  6. 学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!附下载链接!...
  7. Oleans集群之Consul再解释
  8. json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON
  9. 设z=〖(1+xy)〗^y,求 ∂z/∂y
  10. Linux单用户下提示权限不够,Linux_/dev/null 权限不足,/dev/null文件设备的权限不对, - phpStudy...
  11. 机器学习集成模型学习——Bagging集成学习(三)
  12. inno setup相关 (二)
  13. windows批处理运行java程序
  14. 公式推导 11-21
  15. 【仿人机器人】机器人基础介绍
  16. 十六进制颜色与RGB颜色对照表
  17. 如何用 Stata 做调节中介效应检验?
  18. POTN——新时代网络融合的必经之路
  19. 消费新品周报 | AWE海尔推出无尘洗衣机;卡西欧F1红牛车队合作新款运动手表...
  20. 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)

热门文章

  1. Linux 高效使用 alias 总结
  2. (一)linux基本命令
  3. 学会ipconfig,ping,netstat,tracert,pathping,arp、net及netsh等常用网络cmd命令 2021-4-11
  4. 短视频封面怎么做吸引人?分享三种封面类型,让人看了都想点
  5. c语言float可以作为switch,switch可接受的变量数据类型
  6. jQuery之制作简单的轮播图效果
  7. 浅谈android中的图片处理之基本绘图(一)
  8. 优化算法SGD/ASGD/AdaGrad/Adadelta/RMSprop/Adam/Adamax/SparseAdam/L-BFGS/Rprop
  9. springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目(笔记,帮填坑)
  10. springclound 链路追踪sleuth