jQuery Make Example

by andypotanin

HTML

<body></body>

JavaScript

$.extend({
    make: function(){
                    var $elem,text,children,type,name,props;
                    var args = arguments;
                    var tagname = args[0];
                    if(args[1]){
                            if (typeof args[1]=='string'){
                                    text = args[1];
                            }else if(typeof args[1]=='object' && args[1].push){
                              children = args[1];
                            }else{
                                    props = args[1];
                            }
                    }
                    if(args[2]){
                            if(typeof args[2]=='string'){
                                    text = args[2];
                            }else if(typeof args[1]=='object' && args[2].push){
                              children = args[2];
                            }
                    }
                    if(tagname == 'text' && text){
                        return document.createTextNode(text);
                    }else{
                    $elem = $(document.createElement(tagname));
                    if(props){
                            for(var propname in props){
                              if (props.hasOwnProperty(propname)) {
                                    if($elem.is(':input') && propname == 'value'){
                                        $elem.val(props[propname]);
                                    } else {
                                        $elem.attr(propname, props[propname]);
                                    }
                                    // give ie a hook to style inputs... sigh
                                    if(window.attachEvent && !window.opera){ // is IE7 and down 
                                       if($elem.is(':input')){
                                           $elem.addClass('IE-input-' + $elem.attr('type'));
                                       }
                                   ...