I checked the jQuery official documents and it says that starting with
1.2.2
$("#foo").remove().appendTo("#bar");
should be written as
$("#foo").appendTo("#bar");
(http://docs.jquery.com/Manipulation/remove#expr)

I assume appendTo() and insertAfter() follow the same rules. It seems
like they do move the object instead of copy it? I'm confused now...

On Jan 3, 3:31 pm, Betty <xlu.2...@gmail.com> wrote:
> Thank you, Mike. You're so patient and helpful!
> Apparently I didn't understand insertAfter() well enough. I thought it
> would move the object, not duplicate the object.
> Is there a function in jQuery that simply moves an object? Or, if I
> remove() the object, do I need to add() it again if I want to use it
> some time later?
> Again, thank you very much!
>
> On Jan 3, 1:28 pm, "Michael Geary" <m...@mg.to> wrote:
>
>
>
> > Do you notice that the page also blanks out when you get the error? Why is
> > that?
>
> > Try this:
>
> > Open your page and open the Firebug panel.
>
> > Now click the button that provokes the error. Then click on the filename in
> > the Firebug error message (my.etc.js line 68). You should get the source
> > code for your jQuery.ajax function.
>
> > The error is happening in the beforeSend callback. Set a breakpoint on the
> > line *before* the error, line 67, by clicking on the line number.
>
> > Now click the Back button, then click the button that provokes the error
> > again. It should stop on line 67.
>
> > The page still looks OK.
>
> > Click in the yellow "New watch expression" bar and type $ and the Enter key.
> > You should get a function listed in the watch window, and if you expand it,
> > it will be seen to be the jQuery constructor.
>
> > Now step over the code in line 67. (On Windows, the F10 key will do it. Or
> > on any platform, use the Step Over icon on the right side of the Firebug
> > panel.)
>
> > Boom. The page blanks out, and the $ in the watch window turns into a
> > reference error.
>
> > Clearly, the code on page 67 has trashed your document.
>
> > Why?
>
> > Well, the code in line 67 is:
>
> > $('#respond').insertAfter($("div.comment"));
>
> > That's taking an existing DOM element and inserting it in a second place in
> > the DOM. This is a Very Bad Thing. A DOM node can't be in two places at
> > once.
>
> > Try repeating the experiment (you may need to restart Firefox first if it's
> > badly trashed), and when you get to line 67, instead of stepping over it,
> > enter either of these two statements in the Firebug console:
>
> > $('#respond').remove().insertAfter($("div.comment"));
>
> > Now you'll find that the document is not trashed; either statement executes
> > successfully.
>
> > This is because the statements avoid having the same node appear in two
> > places. The first one removes the node from its current location before
> > inserting it; the second one clones the node.
>
> > I'm not sure which of these is what you want (if indeed either is), but this
> > should help point you toward a solution.
>
> > Note that the second version of the code:
>
> > $('#respond').clone().insertAfter($("div.comment"));
>
> > leaves the document in a somewhat invalid state, because there are now two
> > elements with the same ID (respond). But that's not a document-trashing
> > error. It's not recommended, but browsers generally let you get away with
> > it.
>
> > -Mike
>
> > > From: Betty
>
> > > I get this error in the Firefox error console: "$ is not defined".
> > > it points me to line
> > > $("div#respond>h3").html("Reply to");
>
> > > I'm sure I've set jQuery properly because it works fine in
> > > other browsers and the other jQuery effects I use can work in
> > > Firefox. Only this part does not work. Actually, it works on
> > > my local test computer, but if I upload the same file to the
> > > server, this part gets this error. I can't understand why.
>
> > > If you need an example, it's <a href="http://myfairland.net/mizong/
> > > #comments">http://myfairland.net/mizong/#comments</a>. The
> > > site is in Chinese. If you put the mouse on the comment part
> > > and click the button that appears, with the Chinese word that
> > > means "reply", you can get the error in Firefox.
>
> > > This error really frustrates me. If you can help me, I'll
> > > appreciate you very much! Many thanks!

Reply via email to