Skip to content

Instantly share code, notes, and snippets.

@dmikey
Created October 2, 2013 20:53
Show Gist options
  • Save dmikey/6800380 to your computer and use it in GitHub Desktop.
Save dmikey/6800380 to your computer and use it in GitHub Desktop.
Simple jquery template usage $(element for display).($template as jquery selector, data);
$.fn.tmpl = function(template, data){
var _ = {
cache: {},
// John Resig - simple html template
render: function render(template, data) {
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(template) ?
_.cache[template] = _.cache[template] ||
render(document.getElementById(template).innerHTML) :
// Generate a reusable function that will serve as a template
// generator (and which will be cached).
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
// Introduce the data as local variables using with(){}
"with(obj){p.push('" +
// Convert the template into pure JavaScript
template
.replace(/[\r\t\n]/g, " ")
.split("<%").join("\t")
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
.replace(/\t=(.*?)%>/g, "',$1,'")
.split("\t").join("');")
.split("%>").join("p.push('")
.split("\r").join("\\'") + "');}return p.join('');");
// Provide some basic currying to the user
return data ? fn(data) : fn;
},
isArray: function (arr) {
var isarr;
if (!Array.isArray) {
isarr = function (vArg) {
return Object.prototype.toString.call(vArg) === "[object Array]";
};
} else {
isarr = Array.isArray
}
return isarr(arr);
}
};
var html = '';
var str = template.html();
if (_.isArray(data)) {
for (var i = 0; i < data.length; i++) {
try{
html += _.render(str, data[i]);
}catch(err){}
}
} else {
try{
html = _.render(str, data);
}catch(err){}
}
$(this).html(html);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment