Thanks a lot for your replies.
Ok, I guess there are good reasons to return the replaced object.

Now my question becomes... is there a better jQuery way of doing this
quite ugly thing:

$.fn.replaceWithAndReturnNew = function(htmls){
        var replaced = $(this)[0];
        var div = document.createElement('DIV');
        div.innerHTML = htmls;
        var replacer = div.firstChild;
        replaced.parentNode.replaceChild(replacer, replaced);
        return $(replacer);};

There's a working page there: http://friendpaste.com/GkTTkwQV

Cheers,

On Sep 18, 1:09 am, Ariel Flesler <[EMAIL PROTECTED]> wrote:
> Sorry, I missunderstood the initial (and subsequential) posts.
> The present behavior (return the initially matched element) is the
> correct one. That's what I'd expect and it matches the behavior of
> remove(), append(), etc.
>
> Don't file any bug report :)
>
> Thanks Richard for pinging me about this.
>
> --
> Ariel Fleslerhttp://flesler.blogspot.com/
>
> On Sep 17, 6:12 pm, Ariel Flesler <[EMAIL PROTECTED]> wrote:
>
> > I think this is a bug, I'd expectreplaceWithto return the old set,
> > just like append/etc.
>
> > Can you (tchvil) file a bug with a test case ? put it under core,
> > assigned to me.
>
> > Thanks
> > --
> > Ariel Fleslerhttp://flesler.blogspot.com/
>
> > On Sep 17, 8:04 am, "Richard D. Worth" <[EMAIL PROTECTED]> wrote:
>
> > > On Wed, Sep 17, 2008 at 6:58 AM, Karl Rudd <[EMAIL PROTECTED]> wrote:
>
> > > > Nah, it's not a bug.
>
> > > >replaceWith( content )  Returns: jQuery
> > > > Replaces all matched elements with the specified HTML or DOM elements.
> > > > This returns the JQuery element that was just replaced, which has been
> > > > removed from the DOM
>
> > > > (http://docs.jquery.com/Manipulation)
>
> > > It may be well documented, but that doesn't mean it can't be a bug. ;)
>
> > > > It's like doing a remove(), followed by an append(). Like "remove()"
> > > > it also "returns" (well keeps in the jQuery collection) the elements
> > > > it removes.
>
> > > This is quite a fundamental difference. Since .remove() returns a DOM
> > > Element, it's not chainable. SincereplaceWith() returns a chainable jQuery
> > > object, it's reasonable to expect methods you call on that chain to effect
> > > the new element, not your now removed/disconnected element(s). Like many
> > > other methods, it could modify the chain. And if you wanted to get back to
> > > the previous chain, you could call .end(). My 2c.
>
> > > - Richard

Reply via email to