From: John Resig Date: Mon, 11 Oct 2010 11:45:15 +0000 (-0400) Subject: Make sure closest works on disconnected DOM nodes. Fixes #7142. X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=385ca2aa899d2ed953d9e18c95387e72e330b42c Make sure closest works on disconnected DOM nodes. Fixes #7142. --- diff --git a/src/traversing.js b/src/traversing.js index de250e6..5a479f2 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -108,7 +108,7 @@ jQuery.fn.extend({ } else { cur = cur.parentNode; - if ( !cur.ownerDocument || cur === context ) { + if ( !cur || !cur.ownerDocument || cur === context ) { break; } } diff --git a/test/unit/traversing.js b/test/unit/traversing.js index 0636f0c..f9e7937 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -122,7 +122,7 @@ test("filter(jQuery)", function() { }) test("closest()", function() { - expect(10); + expect(11); same( jQuery("body").closest("body").get(), q("body"), "closest(body)" ); same( jQuery("body").closest("html").get(), q("html"), "closest(html)" ); same( jQuery("body").closest("div").get(), [], "closest(div)" ); @@ -139,7 +139,9 @@ test("closest()", function() { //Test that .closest() returns unique'd set equals( jQuery('#main p').closest('#main').length, 1, "Closest should return a unique set" ); - + + // Test on disconnected node + equals( jQuery("

").find("p").closest("table").length, 0, "Make sure disconnected closest work." ); }); test("closest(Array)", function() {