diff options
author | John Resig <jeresig@gmail.com> | 2007-08-19 00:07:41 +0000 |
---|---|---|
committer | John Resig <jeresig@gmail.com> | 2007-08-19 00:07:41 +0000 |
commit | 05d401dd8439d8a2137d3fb69a70d671c0d3a69d (patch) | |
tree | 8e06d0eb3ea4432a3d74ff14abd9e42818379f3e | |
parent | 760a244dbdca7b5a93d147c62ac37ff6eeb9573b (diff) | |
download | jquery-05d401dd8439d8a2137d3fb69a70d671c0d3a69d.tar.gz jquery-05d401dd8439d8a2137d3fb69a70d671c0d3a69d.zip |
Fixed non-unique results from .parent(), .parents(), .next(), etc. (Bug #1449)
-rw-r--r-- | build/test/index.html | 2 | ||||
-rw-r--r-- | src/jquery/coreTest.js | 19 | ||||
-rw-r--r-- | src/jquery/jquery.js | 2 |
3 files changed, 16 insertions, 7 deletions
diff --git a/build/test/index.html b/build/test/index.html index 4021d330c..4d79f3882 100644 --- a/build/test/index.html +++ b/build/test/index.html @@ -19,7 +19,7 @@ <h2 id="userAgent"></h2> <!-- Test HTML --> - <dl style="display:none;"> + <dl id="dl" style="display:none;"> <div id="main" style="display: none;"> <p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p> <p id="ap"> diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js index b65877a30..cda5908e0 100644 --- a/src/jquery/coreTest.js +++ b/src/jquery/coreTest.js @@ -722,11 +722,12 @@ test("not()", function() { }); test("siblings([String])", function() { - expect(4); + expect(5); isSet( $("#en").siblings().get(), q("sndp", "sap"), "Check for siblings" ); isSet( $("#sndp").siblings("[code]").get(), q("sap"), "Check for filtered siblings (has code child element)" ); isSet( $("#sndp").siblings("[a]").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" ); isSet( $("#foo").siblings("form, b").get(), q("form", "lengthtest", "floatTest"), "Check for multiple filters" ); + isSet( $("#en, #sndp").siblings().get(), q("sndp", "sap", "en"), "Check for unique results from siblings" ); }); test("children([String])", function() { @@ -736,26 +737,34 @@ test("children([String])", function() { isSet( $("#foo").children("#en, #sap").get(), q("en", "sap"), "Check for multiple filters" ); }); -test("parent[s]([String])", function() { - expect(8); +test("parent([String])", function() { + expect(5); ok( $("#groups").parent()[0].id == "ap", "Simple parent check" ); ok( $("#groups").parent("p")[0].id == "ap", "Filtered parent check" ); ok( $("#groups").parent("div").length == 0, "Filtered parent check, no match" ); ok( $("#groups").parent("div, p")[0].id == "ap", "Check for multiple filters" ); + isSet( $("#en, #sndp").parent().get(), q("foo"), "Check for unique results from parent" ); +}); +test("parents([String])", function() { + expect(5); ok( $("#groups").parents()[0].id == "ap", "Simple parents check" ); ok( $("#groups").parents("p")[0].id == "ap", "Filtered parents check" ); ok( $("#groups").parents("div")[0].id == "main", "Filtered parents check2" ); isSet( $("#groups").parents("p, div").get(), q("ap", "main"), "Check for multiple filters" ); + isSet( $("#en, #sndp").parents().get(), q("foo", "main", "dl", "body", "html"), "Check for unique results from parents" ); }); -test("next/prev([String])", function() { - expect(8); +test("next([String])", function() { + expect(4); ok( $("#ap").next()[0].id == "foo", "Simple next check" ); ok( $("#ap").next("div")[0].id == "foo", "Filtered next check" ); ok( $("#ap").next("p").length == 0, "Filtered next check, no match" ); ok( $("#ap").next("div, p")[0].id == "foo", "Multiple filters" ); +}); +test("prev([String])", function() { + expect(4); ok( $("#foo").prev()[0].id == "ap", "Simple prev check" ); ok( $("#foo").prev("p")[0].id == "ap", "Filtered prev check" ); ok( $("#foo").prev("div").length == 0, "Filtered prev check, no match" ); diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index 94f099be8..bc4bcd1e7 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -2073,7 +2073,7 @@ jQuery.each({ var ret = jQuery.map(this,n); if ( a && typeof a == "string" ) ret = jQuery.multiFilter(a,ret); - return this.pushStack( ret ); + return this.pushStack( jQuery.unique(ret) ); }; }); |