$.create = function() {
var ret = [], a = arguments, i, e;
a = a[0].constructor == Array ? a[0] : a;
for(i=0; i<a.length; i++) {
if(a[i+1] && a[i+1].constructor == Object) { // item is element if attributes follow
e = document.createElement(a[i]);
$(e).attr(a[++i]); // apply attributes
if (a[i] == 'table') alert ('titi');
if(a[i+1] && a[i+1].constructor == Array) $(e).append($.create(a[++i])); // optional children
ret.push(e);
} else { // item is just a text node
ret.push(document.createTextNode(a[i]));
}
}
return ret;
};
// Usage
$.create(
'table', { 'class':"MyTable" }, [
'tbody', {}, [
'tr', { 'class':"MyTableRow" }, [
'td', { 'class':"MyTableCol1" }, [ "howdy" ],
'td', { 'class':"MyTableCol2" }, [
"Link:", 'a', { 'class':"MyLink", 'href':"http://www.example.com" }, ["example.com"] ] ],
'tr', { 'class':"MyTableRow2" }, [
'td', { 'class':"MyTableCol1" }, [ "howdy" ],
'td', { 'class':"MyTableCol2" }, [
"Link:", 'a', { 'class':"MyLink", 'href':"http://www.example.com" }, ["example.com"] ] ] ] ]);