function JzRender(tpl, data) { // 模版解析 data是对象则返回字符串,是数组则返回字符串数组 if (data instanceof Array) { var s = []; for (var i = 0, j = data.length; i < j; i++) { s.push(JzRender(tpl, $.extend({}, {}, data[i]))); } return s; } return tpl.replace(/\$[A-Za-z0-9_\.\(\)]+\$/gi, function (matchs) { var rs = matchs.replace(/\$/g, ""); // 找到匹配的字符串 var s = ''; var o = rs.indexOf(')'); if (-1 == o) { // 没有定义需要执行的函数 $argName$ if (-1 == rs.indexOf('.')) { s = data[rs]; } else { var aa = rs.split('.'); //只支持一级对象 s = data[aa[0]][aa[1]]; } } else { var k = rs.indexOf('('); var ns = rs.substr(0, k); var argName = rs.substr(k + 1, o - k - 1); if (-1 == ns.indexOf('.')) { // 顶级函数 $Func(argName,data)$ s = typeof (window[ns]) == 'function' ? window[ns](data[argName], data) : data[argName]; } else { var na = ns.split('.'); // 只支持一级对象 $Cls.Func(argName,data)$ s = typeof (window[na[0]][na[1]]) == 'function' ? window[na[0]][na[1]](data[argName], data) : data[argName]; } } return (s + "") == "undefined" ? "" : s; }); } function RenderJson(selector,json) { // 应用json模版 var tpl = $(selector).html(); var s = []; for (var o in json) { if (Object.prototype.hasOwnProperty.call(json, o)) { s.push(JzRender(tpl, json[o])); } } $(selector).removeClass('hide').html(s.join('')); s.length = 0; }