使用jQuery模板来展现json数据的代码
更新时间:2010年10月22日 10:20:47 作者:
通常我们在使用ajax的时候,都避免不了和json这种轻巧的数据格式打交道。可是往往手动的去解析json,构建HTML,比较麻烦。现在有了这个插件,就能像Extjs那样使用模板解析json了。
完整代码:
$.fn.parseTemplate = function(data)
{
var str = (this).html();
var _tmplCache = {}
var err = "";
try
{
var func = _tmplCache[str];
if (!func)
{
var strFunc =
"var p=[],print=function(){p.push.apply(p,arguments);};" +
"with(obj){p.push('" +
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^#]*#>)/g, "\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<#=(.+?)#>/g, "',$1,'")
.split("<#").join("');")
.split("#>").join("p.push('")
+ "');}return p.join('');";
//alert(strFunc);
func = new Function("obj", strFunc);
_tmplCache[str] = func;
}
return func(data);
} catch (e) { err = e.message; }
return "< # ERROR: " + err.toString() + " # >";
}
使用方法:
首先声明这个模板
<script id="template" type="text/html">
<table style="width:400px;">
<thead>
<tr>
<th>name</th>
<th>age</th>
<th>date</th>
<th>type</th>
</tr>
</thead>
<tbody>
<#
var xing = items.pm;
#>
<tr>
<td>
<#= xing.key #>
</td>
<td>
<#= xing.key1 #>
</td>
<td>
<#= xing.key #>
</td>
<td>
<#= items.pm1 #>
</td>
</tr>
<#
#>
</tbody>
</table>
<br />
<#= items.pm.length #> 记录
</script>
然后使用
$(function(){
var json={"items":{"pm":{"key":"value","key1":"value1"},"pm1":"pmvalue"}};
var output=$('#template').parseTemplate(json);
$('#cc').html(output);
})
就是这么简单!
复制代码 代码如下:
$.fn.parseTemplate = function(data)
{
var str = (this).html();
var _tmplCache = {}
var err = "";
try
{
var func = _tmplCache[str];
if (!func)
{
var strFunc =
"var p=[],print=function(){p.push.apply(p,arguments);};" +
"with(obj){p.push('" +
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^#]*#>)/g, "\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<#=(.+?)#>/g, "',$1,'")
.split("<#").join("');")
.split("#>").join("p.push('")
+ "');}return p.join('');";
//alert(strFunc);
func = new Function("obj", strFunc);
_tmplCache[str] = func;
}
return func(data);
} catch (e) { err = e.message; }
return "< # ERROR: " + err.toString() + " # >";
}
使用方法:
首先声明这个模板
复制代码 代码如下:
<script id="template" type="text/html">
<table style="width:400px;">
<thead>
<tr>
<th>name</th>
<th>age</th>
<th>date</th>
<th>type</th>
</tr>
</thead>
<tbody>
<#
var xing = items.pm;
#>
<tr>
<td>
<#= xing.key #>
</td>
<td>
<#= xing.key1 #>
</td>
<td>
<#= xing.key #>
</td>
<td>
<#= items.pm1 #>
</td>
</tr>
<#
#>
</tbody>
</table>
<br />
<#= items.pm.length #> 记录
</script>
然后使用
复制代码 代码如下:
$(function(){
var json={"items":{"pm":{"key":"value","key1":"value1"},"pm1":"pmvalue"}};
var output=$('#template').parseTemplate(json);
$('#cc').html(output);
})
就是这么简单!
相关文章
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
多选项卡功能的网站有很多,本人在那么多的类似插件中,目前碰到这个比较好,花了点时间调试出来了与大家分享,感兴趣的朋友可以参考下哈希望对你有所帮助2013-04-04
基于 jquery-cxselect 实现下拉联动效果功能实现
这篇文章主要介绍了基于 jquery-cxselect 实现下拉联动效果,下拉联动是基于query的一款联动下拉菜单插件 jquery-cxselect实现,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-02-02
使用jquery datatable和bootsrap创建表格实例代码
这篇文章主要介绍了使用jquery-datatable和bootsrap创建表格的实例代码,需要的朋友可以参考下2017-03-03
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
这个偏门Bug是我在更新phZoom 1.29后发现的, 我先将之重现一下2012-01-01
jquery load事件(callback/data)使用方法及注意事项
jquery load 事件使用方法,在网上有很多的相关介绍文章,不过大同小异,本文老生长谈,也介绍一下load事件使用方法,感兴趣的朋友可以了解下,或许对你学习jquery有所帮助2013-02-02


最新评论