ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery .tmpl() の使用例 Introduction_jquery

jQuery .tmpl() の使用例 Introduction_jquery

WBOY
WBOYオリジナル
2016-05-16 16:38:581232ブラウズ

ページを更新するためのデータの動的リクエストは、ブログコメントのページング動的読み込み、Weibo のローリング読み込みおよびスケジュールされたリクエスト読み込みなど、現在では非常に一般的な方法です。

これらの場合、動的リクエストによって返されるデータは通常、組み立てられた HTML、JSON、または XML のいずれかです。つまり、データはブラウザー側ではなく、サーバー側で組み立てられます。ただし、HTML を返すのは送信量の点でコスト効率が悪く、Web 送信では XML よりも JSON が使用されるようになりました。

ブラウザ側でJSONに基づいてHTMLを生成する際に非常に面倒な点は、構造が複雑でないときは大丈夫ですが、一度構造が複雑になってしまうと非常に注意してJavaScriptを書く必要があることです。保守するのがほぼ不可能なコード。

PHP でデータのスペルの問題を解決するために Smarty テンプレートが使用されるのと同じように、JavaScript もテンプレートを使用してこれらの問題を解決できます。たとえば、jQuery に基づく jquery.tmpl は現在、公式のテンプレート プラグインとして受け入れられています。詳細な API は jQuery のテンプレートにあり、組み込みのデモでもさまざまな使用法が示されています。

私自身のいくつかの使用では、JavaScript の代わりに、より直感的な HTML 記述方法を使用して、JSON 変数を使用してデータを入力することで、コードの見栄えが大幅に向上しました。

Tmpl にはいくつかのタグがあります:

${}: {{=}} と同等で、出力変数であり、HTML エンコーディングが渡されています。
{{html}}: 出力変数 html ですが、HTML エンコードなしで、HTML コードの出力に適しています。
{{if }} {{else}}: 分岐ロジックを提供します。
{{each}}: ループ ロジック、$value アクセス反復変数を提供します。

jquery tmpl の使用方法:

テンプレート定義:

方法 1:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
<li> 
<b>${Name}</b> (${ReleaseYear}) 
</li> 
</script>

方法 2:

function makeTemplate(){ 
var markup='<li><b>${Name}</b> (${ReleaseYear})</li>‘; 
$.template(“movieTemplate”, markup); 
}

データ:

var movies = [ 
{ Name: "The Red Violin", ReleaseYear: "1998" }, 
{ Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
{ Name: "The Inheritance", ReleaseYear: "1976" } 
];

スクリプト:

$( "#movieTemplate" ).tmpl( movies ) 
.appendTo( "#movieList" );

例 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

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。