Side navigation
#1742 closed bug (fixed)
Opened September 27, 2007 01:38PM UTC
Closed November 06, 2007 04:20AM UTC
remove() function crash
Reported by: | alexo | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.2.2 |
Component: | core | Version: | 1.2.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
This is the current implementation of the remove function.
remove: function(a){ if ( !a || jQuery.filter( a, [this] ).r.length ) { jQuery.removeData( this ); this.parentNode.removeChild( this ); } }
There is a case when I am trying to remove an element which parentNode is null. A check should be added to remove function:
remove: function(a){ if ( !a || jQuery.filter( a, [this] ).r.length ) { jQuery.removeData( this ); if (this.parentNode) { this.parentNode.removeChild( this ); } } }
Thank you!
Alex
Attachments (0)
Change History (5)
Changed September 27, 2007 01:56PM UTC by comment:1
need: | Review → Test Case |
---|
Changed September 27, 2007 02:21PM UTC by comment:2
It's not so easy. But it happens when working with ajax and the DOM is being replaced, while DOM elements
references point to orphan elements.
Changed November 01, 2007 10:59PM UTC by comment:3
Encountered this same problem with an Ajax form and Impromptu dialogs. Cut away all but the bare necessities for a demo page, then found this ticket. Unsurprisingly, the solution I came up with is exactly what Alex suggested. Demo page:
http://pyrolupus.com/demo/jqremovebug.php
--Pyro
Changed November 05, 2007 05:52PM UTC by comment:4
The recent example is a situation where it is calling remove() twice. The demo has a jQuery object with two elements and calls fadeOut on the object with a callback. That callback calls remove on a closure version of the object with both elements. But the callback is called twice, once for each of the elements. It can be fixed by calling remove on 'this' instead.
Still, I think the proposed fix could be a good idea. jQuery tends to be robust enough to handle situations like:
$("div").remove().remove();
without throwing errors. Plus there could still be situations like the original bug poster mentioned that this would fix.
Changed November 06, 2007 04:20AM UTC by comment:5
resolution: | → fixed |
---|---|
status: | new → closed |
Appears to be fixed in Rev [3790]
Could you please provide a test case for this? I do not know of a situation where you would call remove on an element that doesn't have a parentNode.