/* * DOM node creation for jQuery. * * Author : Sean Gilbertson * Created : 2006-01-04 * */ $.create = function() { if (arguments.length == 0) { return []; } var first_arg = arguments[0]; /* * In case someone passes in a null object, * assume that they want an empty string. */ if (first_arg == null) { first_arg = ""; } if (first_arg.constructor == String) { if (arguments.length > 1) { var second_arg = arguments[1]; if (second_arg.constructor == String) { var elt = document.createTextNode(first_arg); var elts = []; elts.push(elt); var siblings = $.create.apply(null, Array.prototype.slice.call(arguments, 1)); elts = elts.concat(siblings); return elts; } else { var elt = document.createElement(first_arg); /* * Set element attributes. */ var attributes = arguments[1]; for (var attr in attributes) { $(elt).attr(attr, attributes[attr]); } /* * Add children of this element. */ var children = arguments[2]; children = $.create.apply(null, children); $(elt).append(children); /* * If there are more siblings, render those too. */ if (arguments.length > 3) { var siblings = $.create.apply(null, Array.prototype.slice.call(arguments, 3)); return [elt].concat(siblings); } return elt; } } else { return document.createTextNode(first_arg); } } else { var elts = []; elts.push(first_arg); var siblings = $.create.apply(null, (Array.prototype.slice.call(arguments, 1))); elts = elts.concat(siblings); return elts; } }