Fixed #2062 by adding a check to see if the selector is array-like in .not() before...
authorDavid Serduke <davidserduke@gmail.com>
Mon, 17 Dec 2007 16:54:44 +0000 (16:54 +0000)
committerDavid Serduke <davidserduke@gmail.com>
Mon, 17 Dec 2007 16:54:44 +0000 (16:54 +0000)
src/core.js
test/unit/core.js

index c7f30d6..1ec8de0 100644 (file)
@@ -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;
                });
        },
 
index 088726f..ea687c8 100644 (file)
@@ -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')");
 });