aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartijn W. van der Lee <martijn@vanderlee.com>2016-01-11 20:59:33 +0100
committerTimmy Willison <timmywillisn@gmail.com>2016-01-13 13:33:01 -0500
commit0e2f8f9effd2c95647be534bf9055e099aad7cfd (patch)
treed4e3ef74d8d4b861ea1090a8a829ae133ecbd2f8
parentb0b280cd61d1fa12b67bd723ac2c2fa91b92db01 (diff)
downloadjquery-0e2f8f9effd2c95647be534bf9055e099aad7cfd.tar.gz
jquery-0e2f8f9effd2c95647be534bf9055e099aad7cfd.zip
Traversing: .not/.filter consistency with non-elements
Fixes gh-2808 Close gh-2809
-rw-r--r--src/traversing/findFilter.js2
-rw-r--r--test/unit/traversing.js11
2 files changed, 12 insertions, 1 deletions
diff --git a/src/traversing/findFilter.js b/src/traversing/findFilter.js
index ee76a57a7..f3a929e53 100644
--- a/src/traversing/findFilter.js
+++ b/src/traversing/findFilter.js
@@ -33,7 +33,7 @@ function winnow( elements, qualifier, not ) {
}
return jQuery.grep( elements, function( elem ) {
- return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
} );
}
diff --git a/test/unit/traversing.js b/test/unit/traversing.js
index 7766fd3cb..d38d40be5 100644
--- a/test/unit/traversing.js
+++ b/test/unit/traversing.js
@@ -430,6 +430,17 @@ QUnit.test( "not(jQuery)", function( assert ) {
assert.deepEqual( jQuery( "p" ).not( jQuery( "#ap, #sndp, .result" ) ).get(), q( "firstp", "en", "sap", "first" ), "not(jQuery)" );
} );
+QUnit.test( "not(Selector) excludes non-element nodes (gh-2808)", function( assert ) {
+ assert.expect( 3 );
+
+ var mixedContents = jQuery( "#nonnodes" ).contents(),
+ childElements = q( "nonnodesElement" );
+
+ assert.deepEqual( mixedContents.not( "*" ).get(), [], "not *" );
+ assert.deepEqual( mixedContents.not( "[id=a],[id=b]" ).get(), childElements, "not [id=a],[id=b]" );
+ assert.deepEqual( mixedContents.not( "[id=a],*,[id=b]" ).get(), [], "not [id=a],*,[id=b]" );
+} );
+
QUnit.test( "has(Element)", function( assert ) {
assert.expect( 3 );
var obj, detached, multipleParent;