Skip to content
Permalink
Browse files
Fixed #2062 by adding a check to see if the selector is array-like in…
… .not() before testing it as an array. Otherwise it does a straight comparison during the filter test.
  • Loading branch information
davids549 committed Dec 17, 2007
1 parent d7f5a08 commit 90b25efa6c3c3676c5ae1dd782d04726e03a31e8
Showing with 7 additions and 2 deletions.
  1. +4 −1 src/core.js
  2. +3 −1 test/unit/core.js
@@ -353,7 +353,10 @@ jQuery.fn = jQuery.prototype = {
selector = jQuery.multiFilter( selector, this );

return this.filter(function() {
return jQuery.inArray( this, selector ) < 0;
// check to see if the selector is array-like otherwise assume it is just a DOM element
return ( selector.length && selector[selector.length - 1] !== undefined )
? jQuery.inArray( this, selector ) < 0
: this != selector;
});
},

@@ -1058,11 +1058,13 @@ test("filter()", function() {
});

test("not()", function() {
expect(5);
expect(7);
ok( $("#main > p#ap > a").not("#google").length == 2, "not('selector')" );
ok( $("#main > p#ap > a").not(document.getElementById("google")).length == 2, "not(DOMElement)" );
isSet( $("p").not(".result").get(), q("firstp", "ap", "sndp", "en", "sap", "first"), "not('.class')" );
isSet( $("p").not("#ap, #sndp, .result").get(), q("firstp", "en", "sap", "first"), "not('selector, selector')" );
isSet( $("p").not($("#ap, #sndp, .result")).get(), q("firstp", "en", "sap", "first"), "not(jQuery)" );
ok( $("p").not(document.getElementsByTagName("p")).length == 0, "not(Array-like DOM collection)" );
isSet( $("#form option").not("option.emptyopt:contains('Nothing'),[selected],[value='1']").get(), q("option1c", "option1d", "option2c", "option3d" ), "not('complex selector')");
});

0 comments on commit 90b25ef

Please sign in to comment.