]> source.dussan.org Git - jquery.git/commitdiff
Traversing: Check all pairwise element combinations for .find( els )
authorRichard Gibson <richard.gibson@gmail.com>
Fri, 17 Jan 2014 05:38:56 +0000 (00:38 -0500)
committerRichard Gibson <richard.gibson@gmail.com>
Fri, 17 Jan 2014 05:38:56 +0000 (00:38 -0500)
Ref b8d0d54a3c4960794a1b492957abeb56eddd1e48
Fixes #14701

src/traversing/findFilter.js
test/unit/traversing.js

index f903ac715347b7cc0b89e49d57011453ed7c57d1..dd70a73f77364d130d37437a3176c4eb1736df5f 100644 (file)
@@ -53,14 +53,14 @@ jQuery.filter = function( expr, elems, not ) {
 
 jQuery.fn.extend({
        find: function( selector ) {
-               var i = 0,
+               var i,
                        len = this.length,
                        ret = [],
                        self = this;
 
                if ( typeof selector !== "string" ) {
                        return this.pushStack( jQuery( selector ).filter(function() {
-                               for ( ; i < len; i++ ) {
+                               for ( i = 0; i < len; i++ ) {
                                        if ( jQuery.contains( self[ i ], this ) ) {
                                                return true;
                                        }
@@ -68,8 +68,7 @@ jQuery.fn.extend({
                        }) );
                }
 
-               i = 0;
-               for ( ; i < len; i++ ) {
+               for ( i = 0; i < len; i++ ) {
                        jQuery.find( selector, self[ i ], ret );
                }
 
index b46089271b7f81a94c6ddd1e0bf32ae55b6695c6..fbc453c1dbd34719aa11baa0c53e98bb455e5e68 100644 (file)
@@ -24,19 +24,21 @@ test( "find(leading combinator)", function() {
 });
 
 test( "find(node|jQuery object)", function() {
-       expect( 12 );
+       expect( 13 );
 
        var $foo = jQuery("#foo"),
                $blog = jQuery(".blogTest"),
                $first = jQuery("#first"),
                $two = $blog.add( $first ),
+               $twoMore = jQuery("#ap").add( $blog ),
                $fooTwo = $foo.add( $blog );
 
        equal( $foo.find( $blog ).text(), "Yahoo", "Find with blog jQuery object" );
        equal( $foo.find( $blog[ 0 ] ).text(), "Yahoo", "Find with blog node" );
        equal( $foo.find( $first ).length, 0, "#first is not in #foo" );
        equal( $foo.find( $first[ 0 ]).length, 0, "#first not in #foo (node)" );
-       ok( $foo.find( $two ).is(".blogTest"), "Find returns only nodes within #foo" );
+       deepEqual( $foo.find( $two ).get(), $blog.get(), "Find returns only nodes within #foo" );
+       deepEqual( $foo.find( $twoMore ).get(), $blog.get(), "...regardless of order" );
        ok( $fooTwo.find( $blog ).is(".blogTest"), "Blog is part of the collection, but also within foo" );
        ok( $fooTwo.find( $blog[ 0 ] ).is(".blogTest"), "Blog is part of the collection, but also within foo(node)" );