var winnow = function( elements, qualifier, keep ) {
if ( jQuery.isFunction( qualifier ) ) {
return jQuery.grep(elements, function(elem, i) {
- return !!qualifier.call( elem, i ) === keep;
+ return !!qualifier.call( elem, i, elem ) === keep;
});
} else if ( qualifier.nodeType ) {
return ret;
},
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ contains: function( target ) {
+ return this.has( target ).length > 0;
+ },
+
not: function( selector ) {
return this.pushStack( winnow(this, selector, false), "not", selector);
},