`
天梯梦
  • 浏览: 13742682 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

jQuery .tmpl() 用法

 
阅读更多

参考效果: 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

 

更多参考:

jQuery:从零开始,DIY一个jQuery(1)

jQuery:从零开始,DIY一个jQuery(2)

Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)

jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()

jQuery: 选择器(DOM,name,属性,元素)

 

本文转自: jQuery .tmpl() 用法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jquery.tmpl.js

    这篇讨论将深入探讨`jquery.tmpl.js`的核心功能、使用方法以及其在实际项目中的应用。 `jquery.tmpl.js`主要解决了两个问题:一是如何将数据结构转化为可渲染的HTML,二是如何将这些HTML片段动态插入到页面中。在...

    jquery.tmpl.js使用例子

    这篇教程将深入探讨tmpl.js的使用方法和技巧,帮助你更好地理解和应用这一强大的工具。 首先,tmpl.js的核心理念是通过模板语法来生成HTML。模板通常是一段HTML代码,其中包含了一些特殊的标记,这些标记会被...

    JQuery模板插件 jquery.tmpl 动态ajax扩展

    在上一篇文章中我们已经探讨了jQuery.tmpl的基本用法,但在实际开发中,我们经常需要根据用户交互、URL参数或其他动态条件来异步加载模板或数据。这就是动态Ajax扩展的作用。 动态Ajax扩展是jQuery.tmpl的一个重要...

    jQuery .tmpl(), .template()学习资料小结

    JavaScript代码则通过使用`$.getJSON()`方法调用该服务,并在获取数据后,清空表格内容,并使用获取到的数据通过`.tmpl()`方法渲染到表格中。 ```javascript $('#btnAjax').click(function(){ $.getJSON('@Url....

    jQuery .tmpl(), .template()大全集

    这篇综合指南将深入探讨这两个方法的用法和原理,以帮助你更好地理解和应用它们。 首先,我们来了解一下`.tmpl()`。`.tmpl()`是jQuery的 tmpl 插件提供的一个函数,用于创建和执行基于模板的HTML片段。这个插件引入...

    jquery-tmpl

    本文将深入探讨jQuery tmpl的核心功能、使用方法及其在实际项目中的应用。 jQuery tmpl是jQuery生态中的一个插件,它允许开发者通过简单的模板语法来处理HTML模板和数据的绑定。这个插件的出现,使得前端开发人员...

    jquery.tmpl JQuery模板插件

    3. **使用方法**: 渲染模板通常涉及以下步骤: - 将模板内容放在`&lt;script&gt;`标签内,并设置`type="text/x-jquery-tmpl"`,以告诉jQuery这是一个模板。 - 准备好要绑定的数据,通常是一个JSON对象或数组。 - 使用...

    用模版生成HTML的的框架jquery.tmpl使用详解

    使用jquery.tmpl,你可以将数据绑定到模板中,然后渲染到页面的指定位置。 模板的定义有多种方法,常见的有写入script标签中定义,或者直接在HTML内容中定义。一旦模板定义完成后,就可以通过jquery.tmpl提供的API...

    jQuery .tmpl() 用法示例介绍

    此外,`.tmpl()` 与其他jQuery方法的无缝集成使得在JavaScript环境中处理动态数据变得更加高效。然而,需要注意的是,随着前端框架(如React、Vue、Angular)的崛起,`.tmpl()` 已经逐渐淡出舞台,现在的项目更多地...

    jquery-tmpl-master.zip

    然后,通过jQuery的`.tmpl()`方法结合数据进行编译和渲染: ```javascript &lt;script id="myTemplate" type="text/x-jquery-tmpl"&gt; ${title} ${content} var data = { title: '示例标题', content: '示例内容' };...

    jQuery插件Tmpl的简单使用方法

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

    jsttojs:JSTtoJS-将JavaScript模板(例如mustache或jQuery.tmpl)预编译为单个文件的库

    一个node.js模块,用于将JavaScript模板(例如mustache或jQuery.tmpl)预编译为一个文件。 您可以预编译一些静态小胡子,hogan.js,jQuery.tmpl,underscore.js或任何其他模板,并将它们包含在生成的javascript...

    最简单的jquery-tmpl渲染Demo

    4. **渲染模板**:使用jQuery的`.tmpl()`方法将数据应用到模板上,并将其插入到DOM中。如下所示: ```javascript $("#myTemplate").tmpl(data).appendTo("#listContainer"); ``` 在这个例子中,`#listContainer`是...

    jquery tmpl

    这篇详述将深入探讨jQuery tmpl的核心概念、使用方法以及其优势。 ### 1. jQuery tmpl简介 jQuery tmpl 是jQuery的一个插件,它引入了一种简洁的模板语法,用于在DOM中插入、更新或删除基于JavaScript对象的数据。...

    jQuery 模板

    使用jQuery的`.tmpl()`方法来编译并执行模板。例如: ```javascript var users = [ { Name: "张三", Email: "zhangsan@example.com" }, { Name: "李四", Email: "lisi@example.com" } ]; $("#userListTpl").tmpl...

Global site tag (gtag.js) - Google Analytics