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

Reply via email to