@John I would like to ask the same thing DBJDBJ did.  Why would you
want to find the index of an element that no longer exists?  This just
seems unintuitive.  You shouldn't be able to find the index of
something not in the document.  The two sets of elements did refer to
the same thing, but no they don't because you removed the elements.
This makes sense to me.  As far as I know, no matter how you remove
elements they are not part of the document any more.  Isn't that the
point of removing them?

Devon

On Dec 14, 11:48 pm, John Resig <jere...@gmail.com> wrote:
> A major problem with your technique is that the original elements are
> simply no longer part of the document.
>
> For example:
>
> var someElems = $("div");
> // length == 10
>
> var removed = $("div.foo").remove();
> // length == 5
>
> someElems.index( removed )
> // -1 (the elements you just removed aren't found!)
>
> This creates a problem: You now have two sets of elements that sort of
> refer to the same thing but actually aren't the same.
>
> --John
>
>
>
> On Mon, Dec 14, 2009 at 11:35 PM, Devon Govett <devongov...@gmail.com> wrote:
> > I did some performance testing with the following code, and found it
> > to be much slower than the cloneNode method, but still often twice as
> > fast as the current method.
>
> > jQuery.fn.removeAll = function() {
> >        this.each(function() {
> >                var nextSibling = this.nextSibling;
> >                var parent = this.parentNode;
>
> >                parent.removeChild(this);
> >                while (this.firstChild) {
> >                        this.removeChild(this.firstChild);
> >                }
> >                if(nextSibling)
> >                        parent.insertBefore(this, nextSibling)
> >                else
> >                        parent.appendChild(this);
> >        });
> > };
>
> > What are the problems with the cloneNode method?
>
> > Devon
>
> > On Dec 13, 5:36 pm, Devon Govett <devongov...@gmail.com> wrote:
> >> Yeah I tried that too, and it was slightly slower in most browsers
> >> than cloneNode.  The other issue with this, is that if the user has a
> >> slow computer, or the removal is taking a really long time, layout
> >> problems may occur since there is no element in the DOM during the
> >> emptying.  The cloneNode method has the advantage that during the
> >> emptying process nothing is removed from the screen and so things
> >> don't look weird.  I know this is an edge case, but it is something to
> >> consider.
>
> >> Devon
>
> >> On Dec 13, 10:46 am, John Resig <jere...@gmail.com> wrote:
>
> >> > Actually, now that you bring this up, it would make a lot of sense to
> >> > just remove the element from the DOM first and /then/ go through and
> >> > clean up the child nodes, and finally re-inject the element again. I'm
> >> > hesitant to do a cloneNode because of the inherent problems that exist
> >> > in Internet Explorer. I'll see if I have some time to do some perf
> >> > testing on this later today.
>
> >> > --John
>
> >> > On Sun, Dec 13, 2009 at 8:19 AM, Devon Govett <devongov...@gmail.com> 
> >> > wrote:
> >> > > Hi all,
>
> >> > > I've just blogged about a technique that I used to make jQuery.empty
> >> > > over 10x faster in some cases.  Basically, rather than individually
> >> > > removing each child element from the DOM which causes the browser to
> >> > > reflow after each one, I use a shallow cloneNode to do the job then
> >> > > copying events back over.  Check out the blog post for more details:
> >> > >http://devongovett.wordpress.com/2009/12/12/how-to-make-jquery-empty-....
> >> > > I've included some charts comparing the performance of jQuery 1.4's
> >> > > empty and html("") functions, as well as the function I've written,
> >> > > and the cloneNode method out performs all other methods by a
> >> > > significant amount in all browsers.
>
> >> > > Thanks for jQuery!
> >> > > Devon
>
> >> > > --
>
> >> > > You received this message because you are subscribed to the Google 
> >> > > Groups "jQuery Development" group.
> >> > > To post to this group, send email to jquery-...@googlegroups.com.
> >> > > To unsubscribe from this group, send email to 
> >> > > jquery-dev+unsubscr...@googlegroups.com.
> >> > > For more options, visit this group 
> >> > > athttp://groups.google.com/group/jquery-dev?hl=en.
>
> > --
>
> > You received this message because you are subscribed to the Google Groups 
> > "jQuery Development" group.
> > To post to this group, send email to jquery-...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > jquery-dev+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/jquery-dev?hl=en.

--

You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-...@googlegroups.com.
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en.


Reply via email to