参考效果: DEMO 下载: jquery-tmpl-master
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。
这些情况下,动态请求返回的数据一般不是已拼好的 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" );
参考效果: DEMO 下载: jquery-tmpl-master
实例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>
如果使用jquery1.9以上版本, 就不要使用.live()了,因为它以及被取消,所以使用下面代码on代替:
.... // bind events $('.param-list').on('click','.remove-param', function(){ $(this).parent().remove(); return false; }); $('.param-list').on('click','.add-param', function(){ addParam(); return false; }); ....
参考效果: DEMO 下载: jquery-tmpl-master
更多参考:
Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)
jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
本文转自: jQuery .tmpl() 用法
相关推荐
这篇讨论将深入探讨`jquery.tmpl.js`的核心功能、使用方法以及其在实际项目中的应用。 `jquery.tmpl.js`主要解决了两个问题:一是如何将数据结构转化为可渲染的HTML,二是如何将这些HTML片段动态插入到页面中。在...
这篇教程将深入探讨tmpl.js的使用方法和技巧,帮助你更好地理解和应用这一强大的工具。 首先,tmpl.js的核心理念是通过模板语法来生成HTML。模板通常是一段HTML代码,其中包含了一些特殊的标记,这些标记会被...
在上一篇文章中我们已经探讨了jQuery.tmpl的基本用法,但在实际开发中,我们经常需要根据用户交互、URL参数或其他动态条件来异步加载模板或数据。这就是动态Ajax扩展的作用。 动态Ajax扩展是jQuery.tmpl的一个重要...
JavaScript代码则通过使用`$.getJSON()`方法调用该服务,并在获取数据后,清空表格内容,并使用获取到的数据通过`.tmpl()`方法渲染到表格中。 ```javascript $('#btnAjax').click(function(){ $.getJSON('@Url....
这篇综合指南将深入探讨这两个方法的用法和原理,以帮助你更好地理解和应用它们。 首先,我们来了解一下`.tmpl()`。`.tmpl()`是jQuery的 tmpl 插件提供的一个函数,用于创建和执行基于模板的HTML片段。这个插件引入...
本文将深入探讨jQuery tmpl的核心功能、使用方法及其在实际项目中的应用。 jQuery tmpl是jQuery生态中的一个插件,它允许开发者通过简单的模板语法来处理HTML模板和数据的绑定。这个插件的出现,使得前端开发人员...
3. **使用方法**: 渲染模板通常涉及以下步骤: - 将模板内容放在`<script>`标签内,并设置`type="text/x-jquery-tmpl"`,以告诉jQuery这是一个模板。 - 准备好要绑定的数据,通常是一个JSON对象或数组。 - 使用...
使用jquery.tmpl,你可以将数据绑定到模板中,然后渲染到页面的指定位置。 模板的定义有多种方法,常见的有写入script标签中定义,或者直接在HTML内容中定义。一旦模板定义完成后,就可以通过jquery.tmpl提供的API...
此外,`.tmpl()` 与其他jQuery方法的无缝集成使得在JavaScript环境中处理动态数据变得更加高效。然而,需要注意的是,随着前端框架(如React、Vue、Angular)的崛起,`.tmpl()` 已经逐渐淡出舞台,现在的项目更多地...
然后,通过jQuery的`.tmpl()`方法结合数据进行编译和渲染: ```javascript <script id="myTemplate" type="text/x-jquery-tmpl"> ${title} ${content} var data = { title: '示例标题', content: '示例内容' };...
JavaScript 也可以利用模版来解决这些问题,比如基于 jQuery 的 jquery.tmpl,现在已经被接受为官方的模版插件了。详细的 API 在 jQuery 的 Templates 里,内置的 demo 也尽情地演示了各种用法。
一个node.js模块,用于将JavaScript模板(例如mustache或jQuery.tmpl)预编译为一个文件。 您可以预编译一些静态小胡子,hogan.js,jQuery.tmpl,underscore.js或任何其他模板,并将它们包含在生成的javascript...
4. **渲染模板**:使用jQuery的`.tmpl()`方法将数据应用到模板上,并将其插入到DOM中。如下所示: ```javascript $("#myTemplate").tmpl(data).appendTo("#listContainer"); ``` 在这个例子中,`#listContainer`是...
这篇详述将深入探讨jQuery tmpl的核心概念、使用方法以及其优势。 ### 1. jQuery tmpl简介 jQuery tmpl 是jQuery的一个插件,它引入了一种简洁的模板语法,用于在DOM中插入、更新或删除基于JavaScript对象的数据。...
使用jQuery的`.tmpl()`方法来编译并执行模板。例如: ```javascript var users = [ { Name: "张三", Email: "zhangsan@example.com" }, { Name: "李四", Email: "lisi@example.com" } ]; $("#userListTpl").tmpl...