diff options
Diffstat (limited to 'bower_components/jquery/src/traversing.js')
| -rw-r--r-- | bower_components/jquery/src/traversing.js | 200 | 
1 files changed, 200 insertions, 0 deletions
| diff --git a/bower_components/jquery/src/traversing.js b/bower_components/jquery/src/traversing.js new file mode 100644 index 0000000..943d16c --- /dev/null +++ b/bower_components/jquery/src/traversing.js @@ -0,0 +1,200 @@ +define([ +	"./core", +	"./var/indexOf", +	"./traversing/var/rneedsContext", +	"./core/init", +	"./traversing/findFilter", +	"./selector" +], function( jQuery, indexOf, rneedsContext ) { + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, +	// methods guaranteed to produce a unique set when starting from a unique set +	guaranteedUnique = { +		children: true, +		contents: true, +		next: true, +		prev: true +	}; + +jQuery.extend({ +	dir: function( elem, dir, until ) { +		var matched = [], +			truncate = until !== undefined; + +		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { +			if ( elem.nodeType === 1 ) { +				if ( truncate && jQuery( elem ).is( until ) ) { +					break; +				} +				matched.push( elem ); +			} +		} +		return matched; +	}, + +	sibling: function( n, elem ) { +		var matched = []; + +		for ( ; n; n = n.nextSibling ) { +			if ( n.nodeType === 1 && n !== elem ) { +				matched.push( n ); +			} +		} + +		return matched; +	} +}); + +jQuery.fn.extend({ +	has: function( target ) { +		var targets = jQuery( target, this ), +			l = targets.length; + +		return this.filter(function() { +			var i = 0; +			for ( ; i < l; i++ ) { +				if ( jQuery.contains( this, targets[i] ) ) { +					return true; +				} +			} +		}); +	}, + +	closest: function( selectors, context ) { +		var cur, +			i = 0, +			l = this.length, +			matched = [], +			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? +				jQuery( selectors, context || this.context ) : +				0; + +		for ( ; i < l; i++ ) { +			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { +				// Always skip document fragments +				if ( cur.nodeType < 11 && (pos ? +					pos.index(cur) > -1 : + +					// Don't pass non-elements to Sizzle +					cur.nodeType === 1 && +						jQuery.find.matchesSelector(cur, selectors)) ) { + +					matched.push( cur ); +					break; +				} +			} +		} + +		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); +	}, + +	// Determine the position of an element within +	// the matched set of elements +	index: function( elem ) { + +		// No argument, return index in parent +		if ( !elem ) { +			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; +		} + +		// index in selector +		if ( typeof elem === "string" ) { +			return indexOf.call( jQuery( elem ), this[ 0 ] ); +		} + +		// Locate the position of the desired element +		return indexOf.call( this, + +			// If it receives a jQuery object, the first element is used +			elem.jquery ? elem[ 0 ] : elem +		); +	}, + +	add: function( selector, context ) { +		return this.pushStack( +			jQuery.unique( +				jQuery.merge( this.get(), jQuery( selector, context ) ) +			) +		); +	}, + +	addBack: function( selector ) { +		return this.add( selector == null ? +			this.prevObject : this.prevObject.filter(selector) +		); +	} +}); + +function sibling( cur, dir ) { +	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} +	return cur; +} + +jQuery.each({ +	parent: function( elem ) { +		var parent = elem.parentNode; +		return parent && parent.nodeType !== 11 ? parent : null; +	}, +	parents: function( elem ) { +		return jQuery.dir( elem, "parentNode" ); +	}, +	parentsUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "parentNode", until ); +	}, +	next: function( elem ) { +		return sibling( elem, "nextSibling" ); +	}, +	prev: function( elem ) { +		return sibling( elem, "previousSibling" ); +	}, +	nextAll: function( elem ) { +		return jQuery.dir( elem, "nextSibling" ); +	}, +	prevAll: function( elem ) { +		return jQuery.dir( elem, "previousSibling" ); +	}, +	nextUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "nextSibling", until ); +	}, +	prevUntil: function( elem, i, until ) { +		return jQuery.dir( elem, "previousSibling", until ); +	}, +	siblings: function( elem ) { +		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); +	}, +	children: function( elem ) { +		return jQuery.sibling( elem.firstChild ); +	}, +	contents: function( elem ) { +		return elem.contentDocument || jQuery.merge( [], elem.childNodes ); +	} +}, function( name, fn ) { +	jQuery.fn[ name ] = function( until, selector ) { +		var matched = jQuery.map( this, fn, until ); + +		if ( name.slice( -5 ) !== "Until" ) { +			selector = until; +		} + +		if ( selector && typeof selector === "string" ) { +			matched = jQuery.filter( selector, matched ); +		} + +		if ( this.length > 1 ) { +			// Remove duplicates +			if ( !guaranteedUnique[ name ] ) { +				jQuery.unique( matched ); +			} + +			// Reverse order for parents* and prev-derivatives +			if ( rparentsprev.test( name ) ) { +				matched.reverse(); +			} +		} + +		return this.pushStack( matched ); +	}; +}); + +return jQuery; +}); | 
