I could not get the first example to work. Again, I just can't seem to
grasp what map does or how to make it work.

The second example is very close to working, except that it returns an
array, not a jQuery collection. So, let me try rephasing my question.
How do I create an empty jQuery collection?

I have actually acomplished this, but it's very ugly. Instead of the
following:

  var returnObject = [];   //creates an empty array

I used the following:

  var returnObject = $(this).not(this);

That seems pretty stupid to me, but it's the only way I could figure
out to create an empty jQuery collection, to which I can add
individual jQuery objects from inside my loop. Surely, there is a more
elegant way to create an empty jQuery collection.

The pushStack suggestion is great, btw.

Thanks again,

Larry


On Dec 12, 4:42 am, Wizzud <[EMAIL PROTECTED]> wrote:
> Simply return your new collection. How you get your new collection
> from the current object may well involve map(), but however you do it,
> all you need to do is return whatever collection you want to continue
> the chain with. It is probably advisable to use pushStack(), so that
> your original collection can be retrieved further along the 'chain' if
> desired (by using end()).
>
> eg.
>
> $.fn.myMethod = function() {
>     return this.pushStack( this.map(function(i,elem) {
>         //
>         // return newElement
>         //
>       }) );
>
> };
>
> or
>
> $.fn.myMethod = function() {
>     var returnObject = [];
>     this.each(function() {
>         // var newElement = something based on 'this'
>         // returnObject.push(newElement);
>       });
>     return this.pushStack(returnObject);
>
> };
>
> or variations thereof.
>
> On Dec 12, 3:01 am, McLars <[EMAIL PROTECTED]> wrote:
>
>
>
> > I have a plugin that needs to return a different jQuery collection
> > than the one it was passed. In other words, each of the elements
> > passed in the original collection will create a new element, and I
> > want to return the new elements instead of the originals.
>
> > So, instead of something like this:
>
> > $.fn.myMethod = function() {
> >     return this.each(function() {
> >     //
> >     // Create new element here
> >     //
>
> > });
>
> > which returns the original element collection (preserves chaining),
> > I'm looking for an elegant way to return the new elements in a jQuery
> > collection.
>
> > I think maybe the $.map method might be part of the solution, but I'm
> > afraid I just can't understand how. Any help would be appreciated.
>
> > Thanks,
>
> > Larry- Hide quoted text -
>
> - Show quoted text -

Reply via email to