Side navigation
#2697 closed bug (fixed)
Opened April 16, 2008 05:22PM UTC
Closed December 05, 2009 08:31PM UTC
replaceWith should remove before adding
Reported by: | scottgonzalez | Owned by: | flesler |
---|---|---|---|
Priority: | major | Milestone: | 1.4 |
Component: | core | Version: | 1.4a1 |
Keywords: | replaceWith | Cc: | |
Blocked by: | Blocking: |
Description
See Google Group post for description and possible fix.
Attachments (0)
Change History (3)
Changed May 07, 2008 05:52PM UTC by comment:1
owner: | → flesler |
---|---|
status: | new → assigned |
Changed April 21, 2009 07:10PM UTC by comment:2
I'm surprised that this bug wasn't fixed for a whole year, and I've just been affected by this.
The posting in Google Groups asks for a concrete example, and I have one. I'm creating a Rails application, where I have a _commentform template, that contains a form element, that is submitted with ajax. If there are errors in any fields, then _commentform is rerendered with error messages, and $('#formid').replaceWith('...commentform...') is used to replace old form with the new one.
Later I've added a script tag in that form, that performs some javascript on buttons on the form, using $('#buttonid'). But, unfortunately, when using .replaceWith, scripts are executed when there are *two* elements on the page with the same id, and because old form elements are before new form elements, jQuery picks old buttons (which are later removed), and now I have buttons that don't do what I'd expect.
Needless to say, that Prototype handles this situation correctly, and old elements are removed before new ones are injected, so everything works very well.
Also, I've studied jQuery sources, and it seems that using prev/after/prepend has to do a little more work than next/before/append, so perhaps this implementation would be better than the previous one:
$.fn.replaceWith = function(value) { return this.each(function() { var e = $(this); var s = e.next(); var p = e.parent(); e.remove(); if (s.size()) s.before(value); else p.append(value); }); }
Changed December 05, 2009 08:31PM UTC by comment:3
milestone: | 1.2.4 → 1.4 |
---|---|
resolution: | → fixed |
status: | assigned → closed |
version: | 1.2.3 → 1.4a1 |