Niceeeeeeeee Erik! Definitely how I like to code! Perfect generalize "unobstrusive" coding!
I do have a question from the your previous response. If its not stored in DOM, then were is the variable stored? I'm not referring to local scoping, but in general, like so: <script type='text/javascript'> var $someVar = null; $(document).ready(function() { $someVar = $('<input>').attr("type", "text") } </script> Of course, global variable is a taboo, but even then, where is this $someVar stored? The window object? Thanks for the plug-in. I have to study it! -- HLS On Aug 17, 5:43 am, "Erik Beeson" <[EMAIL PROTECTED]> wrote: > If you find yourself doing this kind of thing a lot, it might be handy > to turn it into a plugin (totally off the top of my head and > untested): > > (function($) { > var _appendTo = $.fn.appendTo; > $.fn.appendTo = function(parent, n) { > if(n) { > var id = this.attr('id'); > for(var i = 1; i < n; i++) { > > _appendTo.apply(this.clone(true).attr("id",id+i).attr("name",id+i), > [parent]); > } > return > _appendTo.apply(this.attr("id",id+n).attr("name",id+n), [parent]); > } else { > return _appendTo.apply(this, arguments); > } > }; > > })(jQuery); > > Then use it like: > HTML: <form id="theForm"></form> > Script: $('<input type="text" id="email"/>').appendTo('#theForm', 5); > > Would result in: > > <form id="theForm"> > <input type="text" id="email1" name="email1"/> > <input type="text" id="email2" name="email2"/> > <input type="text" id="email3" name="email3"/> > <input type="text" id="email4" name="email4"/> > <input type="text" id="email5" name="email5"/> > </form> > > And it doesn't break the usual usage of appendTo or chainability. > > --Erik > > On 8/17/07, Pops <[EMAIL PROTECTED]> wrote: > > > > > On Aug 17, 4:30 am, "Erik Beeson" <[EMAIL PROTECTED]> wrote: > > > Actually, technically, what I suggested wastes the original node since > > > it never gets inserted, just cloned. Maybe this would be slightly > > > better: > > > > function MakeEmailField(n) { > > > var $inputBox = $('<input>').attr("type", "text"); > > > for(var i = 1; i < n; i++) { > > > $inputBox.clone().attr("id","email"+i).appendTo('#myForm'); > > > } > > > $inputBox.attr("id","email"+n).appendTo('#myForm'); > > > } > > > > Noticed the loop starting value is different. This way, the cloning > > > only happens if you want more than one, which is a little more > > > efficient. > > > Ahhh. I see. Somewhat "Obstrusive" but I see the reasoning. <g> > > > I will definitely save your notes here. Thanks > > > -- > > HLS