Projet

Général

Profil

Paste
Télécharger (2,41 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / libraries / flexslider-2.5.0 / bower_components / jquery / src / traversing / findFilter.js @ 0aee3c58

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 ( jQuery.inArray( elem, qualifier ) >= 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
                        ret = [],
58
                        self = this,
59
                        len = self.length;
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
});