Permalink
Browse files

Fix a regression where has with multiple contexts was not filtering c…

…orrectly. Test added.
  • Loading branch information...
1 parent 4039d36 commit e07b444dfe87f26f0d6031920026142425505ad6 Timmy Willison committed Jul 27, 2012
Showing with 8 additions and 5 deletions.
  1. +3 −3 src/traversing.js
  2. +5 −2 test/unit/traversing.js
View
@@ -48,12 +48,12 @@ jQuery.fn.extend({
},
has: function( target ) {
- var i = 0,
@dmethvin
dmethvin Jul 28, 2012 Member

Ouch! I missed this in the review. Thanks for adding a unit test.

+ var i,
targets = jQuery( target, this ),
- l = targets.length;
+ len = targets.length;
return this.filter(function() {
- for ( ; i < l; i++ ) {
+ for ( i = 0; i < len; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) {
return true;
}
@@ -376,7 +376,7 @@ test("has(Element)", function() {
});
test("has(Selector)", function() {
- expect(4);
+ expect( 5 );
var obj = jQuery("#qunit-fixture").has("#sndp");
deepEqual( obj.get(), q("qunit-fixture"), "Keeps elements that have any element matching the selector as a descendant" );
@@ -385,7 +385,10 @@ test("has(Selector)", function() {
deepEqual( detached.has("i").get(), detached.get(), "...Even when detached" );
var multipleParent = jQuery("#qunit-fixture, #header").has("#sndp");
- deepEqual( obj.get(), q("qunit-fixture"), "Does not include elements that do not have the element as a descendant" );
+ deepEqual( multipleParent.get(), q("qunit-fixture"), "Does not include elements that do not have the element as a descendant" );
+
+ multipleParent = jQuery("#select1, #select2, #select3").has("#option1a, #option3a");
+ deepEqual( multipleParent.get(), q("select1", "select3"), "Multiple contexts are checks correctly" );
var multipleHas = jQuery("#qunit-fixture").has("#sndp, #first");
deepEqual( multipleHas.get(), q("qunit-fixture"), "Only adds elements once" );

0 comments on commit e07b444

Please sign in to comment.