I like it - but the one tricky part is that .remove() is actually
functional beyond the simple .removeChild() call - it also removes any
bound event handlers and bound data from the elements (which is
something that this modified replaceWith would not do). That
functionality would need to stay intact (this is the same reason why
we do .empty().append() in .html() instead of using a straight
innerHTML).

--John



On Mon, Jan 19, 2009 at 7:49 PM, Jed Schmidt <[email protected]> wrote:
>
> Hey all,
>
> Looking at the new source code for 1.3, I was wondering why jQuery
> doesn't take advantage of the native replaceChild method in the W3C
> core. Currently, jQuery implements replaceWith using append and
> remove, but since replaceChild is well supported[1] across browsers,
> it seems like a safe place to optimize performance, since it reduces
> two in-place DOM operations with one.
>
> So I replaced this on line 487 in 1.3:
>
> replaceWith: function( value ) {
>  return this.after( value ).remove();
> },
>
> with this:
>
> replaceWith: function() {
>  return this.domManip(arguments, false, function(elem){
>    this.parentNode.replaceChild( elem, this );
>  });
> },
>
> and put together a before[2] and after[3] page.
>
> On OS 10.5.6, Firefox 3.0.5 went from an average of 1239ms to 935ms,
> and Safari 3.2.1 went from an average of 421ms to 331ms.
>
> What do you guys think?
>
> Jed Schmidt
>
> [1] http://www.quirksmode.org/dom/w3c_core.html
> [2] http://s3.amazonaws.com/replacewith/before.html
> [3] http://s3.amazonaws.com/replacewith/after.html
> >
>

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

Reply via email to