我有下面的方法,通过ajax查询我的服务器,返回JSON数据,我遍历数据并写出到html。
该代码有效,但它很混乱且效率低下。有没有办法将 html 放在各种模板中,而不是在我的 javascript 代码中写出来?
谢谢
$("[name=btnSearch]").on("click", function () {
$.getJSON(ajaxMethod + searchTerm, function (data) {
var html = "";
var sel = "";
var name = "";
var type = "";
//alert(id);
var css = "ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only";
$.each(data, function (key, val) {
sel = val.ID;
name = val.DisplayName;
type = "user";
html += '<tr data-type = "' + type + '" data-result-title = "' + name + '" data-result-id="' + sel + '">';
html += '<td id="' + sel + '">' + name + '</td>';
html += '<td><input type="button" class="select" value="select" style="' + css + '"></td>';
html += '</tr>';
});
//html += '<tr><td style="padding-top: 4px;"> </td><td style="padding-top: 4px;"><input id="btnAddMembers" type="button" value="Add Members" /></td></tr>';
$(html).appendTo('[name=' + div + ']');
});
});
Run Code Online (Sandbox Code Playgroud)
这个问题基本上可以满足您的要求(没有插件,但通过向原型对象添加附加方法)。
在此处阅读已接受的答案:2012 年推荐的 jQuery 模板?
非常简单,易于编辑和扩展,JSfiddle 应该能让你很好地了解它是如何工作的。
编码:
HTML:
<script type="text/template" id="cardTemplate">
<div>
<a href="{0}">{1}</a>
</div>
</script>
<div id="container"></div>
Run Code Online (Sandbox Code Playgroud)
JS:
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
var cardTemplate = $("#cardTemplate").html();
var template = cardTemplate.format("http://example.com", "Link Title");
$("#container").append(template);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |