Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
15403 manish.sha 1
define([
2
	"../core",
3
	"../var/indexOf",
4
	"./var/rneedsContext",
5
	"../selector"
6
], function( jQuery, indexOf, rneedsContext ) {
7
 
8
var risSimple = /^.[^:#\[\.,]*$/;
9
 
10
// Implement the identical functionality for filter and not
11
function winnow( elements, qualifier, not ) {
12
	if ( jQuery.isFunction( qualifier ) ) {
13
		return jQuery.grep( elements, function( elem, i ) {
14
			/* jshint -W018 */
15
			return !!qualifier.call( elem, i, elem ) !== not;
16
		});
17
 
18
	}
19
 
20
	if ( qualifier.nodeType ) {
21
		return jQuery.grep( elements, function( elem ) {
22
			return ( elem === qualifier ) !== not;
23
		});
24
 
25
	}
26
 
27
	if ( typeof qualifier === "string" ) {
28
		if ( risSimple.test( qualifier ) ) {
29
			return jQuery.filter( qualifier, elements, not );
30
		}
31
 
32
		qualifier = jQuery.filter( qualifier, elements );
33
	}
34
 
35
	return jQuery.grep( elements, function( elem ) {
36
		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
37
	});
38
}
39
 
40
jQuery.filter = function( expr, elems, not ) {
41
	var elem = elems[ 0 ];
42
 
43
	if ( not ) {
44
		expr = ":not(" + expr + ")";
45
	}
46
 
47
	return elems.length === 1 && elem.nodeType === 1 ?
48
		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
49
		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
50
			return elem.nodeType === 1;
51
		}));
52
};
53
 
54
jQuery.fn.extend({
55
	find: function( selector ) {
56
		var i,
57
			len = this.length,
58
			ret = [],
59
			self = this;
60
 
61
		if ( typeof selector !== "string" ) {
62
			return this.pushStack( jQuery( selector ).filter(function() {
63
				for ( i = 0; i < len; i++ ) {
64
					if ( jQuery.contains( self[ i ], this ) ) {
65
						return true;
66
					}
67
				}
68
			}) );
69
		}
70
 
71
		for ( i = 0; i < len; i++ ) {
72
			jQuery.find( selector, self[ i ], ret );
73
		}
74
 
75
		// Needed because $( selector, context ) becomes $( context ).find( selector )
76
		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
77
		ret.selector = this.selector ? this.selector + " " + selector : selector;
78
		return ret;
79
	},
80
	filter: function( selector ) {
81
		return this.pushStack( winnow(this, selector || [], false) );
82
	},
83
	not: function( selector ) {
84
		return this.pushStack( winnow(this, selector || [], true) );
85
	},
86
	is: function( selector ) {
87
		return !!winnow(
88
			this,
89
 
90
			// If this is a positional/relative selector, check membership in the returned set
91
			// so $("p:first").is("p:last") won't return true for a doc with two "p".
92
			typeof selector === "string" && rneedsContext.test( selector ) ?
93
				jQuery( selector ) :
94
				selector || [],
95
			false
96
		).length;
97
	}
98
});
99
 
100
});