欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JSON JQUERY模板實現(xiàn)說明

 更新時間:2010年07月03日 00:07:13   作者:  
用JSON從服務(wù)器端返回數(shù)據(jù)已是大家公認的標準,因為它短小精悍,使用方便.
可是在客戶端再現(xiàn)數(shù)據(jù)也是一個不小的問題,用javascript處理經(jīng)常會遇到很繁瑣的事.尤其大批量具有相同結(jié)構(gòu)的數(shù)據(jù),例如表格,處理方式不盡如意.如果能有一個模板控件,就像服務(wù)器端asp.net Gridview或者repeater一樣的東西就好很多.最近看到一個非常優(yōu)秀的解決方案,讓我在使用方便的同時不得不為作者的精巧設(shè)計而作一番感嘆.該解決方案用了區(qū)區(qū)二十幾行代碼,實現(xiàn)了別人要用幾十甚至上百K的js庫所做的工作.它就是John Resig 的 Microtemplating engine.大師Rick Strahl有一篇文章專門對此作了詳細講述(Client Templating with Jquery).我在這里把最核心部分提取出來以方便國人學習。

下面一段程序就是microtemplating engine.

復(fù)制代碼 代碼如下:

var _tmplCache = {}
this.parseTemplate = function(str, data) {
/// <summary>
/// Client side template parser that uses <#= #> and <# code #> expressions.
/// and # # code blocks for template expansion.
/// NOTE: chokes on single quotes in the document in some situations
/// use &rsquo; for literals in text and avoid any single quote
/// attribute delimiters.
/// </summary>
/// <param name="str" type="string">The text of the template to expand</param>
/// <param name="data" type="var">
/// Any data that is to be merged. Pass an object and
/// that object's properties are visible as variables.
/// </param>
/// <returns type="string" />
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.htmlEncode() + " # >";
}

如何使用:
復(fù)制代碼 代碼如下:
parseTemplate($("#ItemTemplate").html(),{ name: "rick", address: { street: "32 kaiea", city: "paia"} } );


上面程序所用的模板:
復(fù)制代碼 代碼如下:
<script id="ItemTemplate" type="text/html"><div><div><#= name #></div><div><#= address.street #></div> </div></script>


如果想用循環(huán):
復(fù)制代碼 代碼如下:
$.each(dataarray,function(index,dataItem){
parseTemplate($("#ItemTemplate").html(), dataItem );
})

很簡單很精巧吧?

相關(guān)文章

  • jQuery中元素選擇器(element)簡單用法示例

    jQuery中元素選擇器(element)簡單用法示例

    這篇文章主要介紹了jQuery中元素選擇器(element)用法,簡單通俗的說明了jQuery元素選擇器的功能、用法并結(jié)合實例形式分析了jQuery元素選擇器的相關(guān)使用技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • jquery模擬LCD 時鐘的html文件源代碼

    jquery模擬LCD 時鐘的html文件源代碼

    LCD想必大家都有見到過吧,本文為大家介紹的就是使用jquery模擬LCD時鐘,以下是HTML文件源代碼
    2014-06-06
  • 使用jQuery實現(xiàn)星級評分代碼分享

    使用jQuery實現(xiàn)星級評分代碼分享

    本文給大家分享的是一段使用jQuery制作的星級評分的代碼,非常大氣漂亮,功能也很實用,這里推薦個大家。
    2014-12-12
  • jQuery中的each()詳細介紹(推薦)

    jQuery中的each()詳細介紹(推薦)

    jquery中的each()非常好用,用起來非常的爽,下面小編給大家介紹jquery中each()的用法詳細介紹,感興趣的朋友一起看看吧
    2016-05-05
  • jQuery中bind()方法用法實例

    jQuery中bind()方法用法實例

    這篇文章主要介紹了jQuery中bind()方法用法,實例分析了bind()方法的功能、定義及為匹配元素的特定事件綁定事件處理方法的技巧,需要的朋友可以參考下
    2015-01-01
  • jQuery操作表單常用控件方法小結(jié)

    jQuery操作表單常用控件方法小結(jié)

    這篇文章主要介紹了jQuery操作表單常用控件方法,實例總結(jié)了jQuery針對常用表單控件的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Jquery異步上傳文件代碼實例

    Jquery異步上傳文件代碼實例

    這篇文章主要介紹了Jquery異步上傳文件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • jQuery模擬淘寶購物車功能

    jQuery模擬淘寶購物車功能

    本文主要介紹了用jQuery模擬淘寶購物車功能的實例,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • web開發(fā)人員學習jQuery的6大理由及jQuery的優(yōu)勢介紹

    web開發(fā)人員學習jQuery的6大理由及jQuery的優(yōu)勢介紹

    jQuery是一個用來簡化HTML客戶端開發(fā)的JS(JavaScrip)庫,它支持HTML DOM處理,同時還融合了部分HTML和CSS
    2013-01-01
  • jQuery為DOM動態(tài)追加事件的方法

    jQuery為DOM動態(tài)追加事件的方法

    下面小編就為大家?guī)硪黄猨Query為DOM動態(tài)追加事件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論