scratch – Diff between revs 58 and 125
?pathlinks?
Rev 58 | Rev 125 | |||
---|---|---|---|---|
1 | // Initialize a jQuery object |
1 | // Initialize a jQuery object |
|
2 | define( [ |
2 | define([ |
|
3 | "../core", |
3 | "../core", |
|
4 | "../var/document", |
- | ||
5 | "./var/rsingleTag", |
4 | "./var/rsingleTag", |
|
6 | "../traversing/findFilter" |
5 | "../traversing/findFilter" |
|
7 | ], function( jQuery, document, rsingleTag ) { |
6 | ], function( jQuery, rsingleTag ) { |
|
8 | |
- | ||
9 | "use strict"; |
- | ||
10 | |
7 | |
|
11 | // A central reference to the root jQuery(document) |
8 | // A central reference to the root jQuery(document) |
|
12 | var rootjQuery, |
9 | var rootjQuery, |
|
13 | |
10 | |
|
14 | // A simple way to check for HTML strings |
11 | // A simple way to check for HTML strings |
|
15 | // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) |
12 | // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) |
|
16 | // Strict HTML recognition (#11290: must start with <) |
13 | // Strict HTML recognition (#11290: must start with <) |
|
17 | // Shortcut simple #id case for speed |
- | ||
18 | rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,[\w\W]+> |
14 | rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,[\w\W]+> |
|
19 | |
15 | |
|
20 | <[\w\W]+> init = jQuery.fn.init = function( selector, context, root ) {[\w\W]+> |
16 | <[\w\W]+> init = jQuery.fn.init = function( selector, context ) {[\w\W]+> |
|
21 | <[\w\W]+> var match, elem;[\w\W]+> |
17 | <[\w\W]+> var match, elem;[\w\W]+> |
|
22 | |
18 | |
|
23 | <[\w\W]+> // HANDLE: $(""), $(null), $(undefined), $(false)[\w\W]+> |
19 | <[\w\W]+> // HANDLE: $(""), $(null), $(undefined), $(false)[\w\W]+> |
|
24 | <[\w\W]+> if ( !selector ) {[\w\W]+> |
20 | <[\w\W]+> if ( !selector ) {[\w\W]+> |
|
25 | <[\w\W]+> return this;[\w\W]+> |
21 | <[\w\W]+> return this;[\w\W]+> |
|
26 | <[\w\W]+> }[\w\W]+> |
22 | <[\w\W]+> }[\w\W]+> |
|
27 | |
- | ||
28 | <[\w\W]+> // Method init() accepts an alternate rootjQuery[\w\W]+> |
- | ||
29 | <[\w\W]+> // so migrate can support jQuery.sub (gh-2101)[\w\W]+> |
- | ||
30 | <[\w\W]+> root = root || rootjQuery;[\w\W]+> |
- | ||
31 | |
23 | |
|
32 | <[\w\W]+> // Handle HTML strings[\w\W]+> |
24 | <[\w\W]+> // Handle HTML strings[\w\W]+> |
|
33 | <[\w\W]+> if ( typeof selector === "string" ) {[\w\W]+> |
- | ||
34 | <[\w\W]+> if ( selector[ 0 ] === "<" &&[\w\W]+> |
25 | <[\w\W]+> if ( typeof selector === "string" ) {[\w\W]+> |
|
35 | <[\w\W]+> selector[ selector.length - 1 ] === ">" &&[\w\W]+> |
- | ||
36 | <[\w\W]+> selector.length >= 3 ) {[\w\W]+> |
- | ||
37 | |
26 | <[\w\W]+> if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {[\w\W]+> |
|
38 | <[\w\W]+> // Assume that strings that start and end with <> are HTML and skip the regex check[\w\W]+> |
27 | <[\w\W]+> // Assume that strings that start and end with <> are HTML and skip the regex check[\w\W]+> |
|
39 | <[\w\W]+> match = [ null, selector, null ];[\w\W]+> |
28 | <[\w\W]+> match = [ null, selector, null ];[\w\W]+> |
|
40 | |
29 | |
|
41 | <[\w\W]+> } else {[\w\W]+> |
30 | <[\w\W]+> } else {[\w\W]+> |
|
42 | <[\w\W]+> match = rquickExpr.exec( selector );[\w\W]+> |
31 | <[\w\W]+> match = rquickExpr.exec( selector );[\w\W]+> |
|
43 | <[\w\W]+> }[\w\W]+> |
32 | <[\w\W]+> }[\w\W]+> |
|
44 | |
33 | |
|
45 | <[\w\W]+> // Match html or make sure no context is specified for #id[\w\W]+> |
34 | <[\w\W]+> // Match html or make sure no context is specified for #id[\w\W]+> |
|
46 | <[\w\W]+> if ( match && ( match[ 1 ] || !context ) ) {[\w\W]+> |
35 | <[\w\W]+> if ( match && (match[1] || !context) ) {[\w\W]+> |
|
47 | |
36 | |
|
48 | <[\w\W]+> // HANDLE: $(html) -> $(array)[\w\W]+> |
37 | <[\w\W]+> // HANDLE: $(html) -> $(array)[\w\W]+> |
|
49 | <[\w\W]+> if ( match[ 1 ] ) {[\w\W]+> |
38 | <[\w\W]+> if ( match[1] ) {[\w\W]+> |
|
50 | <[\w\W]+> context = context instanceof jQuery ? context[ 0 ] : context;[\w\W]+> |
39 | <[\w\W]+> context = context instanceof jQuery ? context[0] : context;[\w\W]+> |
|
51 | |
40 | |
|
52 | <[\w\W]+> // Option to run scripts is true for back-compat[\w\W]+> |
41 | <[\w\W]+> // Option to run scripts is true for back-compat[\w\W]+> |
|
53 | <[\w\W]+> // Intentionally let the error be thrown if parseHTML is not present[\w\W]+> |
42 | <[\w\W]+> // Intentionally let the error be thrown if parseHTML is not present[\w\W]+> |
|
54 | <[\w\W]+> jQuery.merge( this, jQuery.parseHTML([\w\W]+> |
43 | <[\w\W]+> jQuery.merge( this, jQuery.parseHTML([\w\W]+> |
|
55 | <[\w\W]+> match[ 1 ],[\w\W]+> |
44 | <[\w\W]+> match[1],[\w\W]+> |
|
56 | <[\w\W]+> context && context.nodeType ? context.ownerDocument || context : document,[\w\W]+> |
45 | <[\w\W]+> context && context.nodeType ? context.ownerDocument || context : document,[\w\W]+> |
|
57 | <[\w\W]+> true[\w\W]+> |
46 | <[\w\W]+> true[\w\W]+> |
|
58 | <[\w\W]+> ) );[\w\W]+> |
47 | <[\w\W]+> ) );[\w\W]+> |
|
59 | |
48 | |
|
60 | <[\w\W]+> // HANDLE: $(html, props)[\w\W]+> |
49 | <[\w\W]+> // HANDLE: $(html, props)[\w\W]+> |
|
61 | <[\w\W]+> if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {[\w\W]+> |
50 | <[\w\W]+> if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {[\w\W]+> |
|
62 | <[\w\W]+> for ( match in context ) {[\w\W]+> |
51 | <[\w\W]+> for ( match in context ) {[\w\W]+> |
|
63 | |
- | ||
64 | <[\w\W]+> // Properties of context are called as methods if possible[\w\W]+> |
52 | <[\w\W]+> // Properties of context are called as methods if possible[\w\W]+> |
|
65 | <[\w\W]+> if ( jQuery.isFunction( this[ match ] ) ) {[\w\W]+> |
53 | <[\w\W]+> if ( jQuery.isFunction( this[ match ] ) ) {[\w\W]+> |
|
66 | <[\w\W]+> this[ match ]( context[ match ] );[\w\W]+> |
54 | <[\w\W]+> this[ match ]( context[ match ] );[\w\W]+> |
|
67 | |
55 | |
|
68 | <[\w\W]+> // ...and otherwise set as attributes[\w\W]+> |
56 | <[\w\W]+> // ...and otherwise set as attributes[\w\W]+> |
|
69 | <[\w\W]+> } else {[\w\W]+> |
57 | <[\w\W]+> } else {[\w\W]+> |
|
70 | <[\w\W]+> this.attr( match, context[ match ] );[\w\W]+> |
58 | <[\w\W]+> this.attr( match, context[ match ] );[\w\W]+> |
|
71 | <[\w\W]+> }[\w\W]+> |
59 | <[\w\W]+> }[\w\W]+> |
|
72 | <[\w\W]+> }[\w\W]+> |
60 | <[\w\W]+> }[\w\W]+> |
|
73 | <[\w\W]+> }[\w\W]+> |
61 | <[\w\W]+> }[\w\W]+> |
|
74 | |
62 | |
|
75 | <[\w\W]+> return this;[\w\W]+> |
63 | <[\w\W]+> return this;[\w\W]+> |
|
76 | |
64 | |
|
77 | <[\w\W]+> // HANDLE: $(#id)[\w\W]+> |
65 | <[\w\W]+> // HANDLE: $(#id)[\w\W]+> |
|
78 | <[\w\W]+> } else {[\w\W]+> |
66 | <[\w\W]+> } else {[\w\W]+> |
|
79 | <[\w\W]+> elem = document.getElementById( match[ 2 ] );[\w\W]+> |
67 | <[\w\W]+> elem = document.getElementById( match[2] );[\w\W]+> |
|
80 | |
- | ||
81 | <[\w\W]+> if ( elem ) {[\w\W]+> |
- | ||
- | 68 | |
||
- | 69 | <[\w\W]+> // Support: Blackberry 4.6[\w\W]+> |
||
- | 70 | <[\w\W]+> // gEBID returns nodes no longer in the document (#6963)[\w\W]+> |
||
82 | |
71 | <[\w\W]+> if ( elem && elem.parentNode ) {[\w\W]+> |
|
83 | <[\w\W]+> // Inject the element directly into the jQuery object[\w\W]+> |
- | ||
84 | <[\w\W]+> this[ 0 ] = elem;[\w\W]+> |
72 | <[\w\W]+> // Inject the element directly into the jQuery object[\w\W]+> |
|
- | 73 | <[\w\W]+> this.length = 1;[\w\W]+> |
||
85 | <[\w\W]+> this.length = 1;[\w\W]+> |
74 | <[\w\W]+> this[0] = elem;[\w\W]+> |
|
- | 75 | <[\w\W]+> }[\w\W]+> |
||
- | 76 | |
||
- | 77 | <[\w\W]+> this.context = document;[\w\W]+> |
||
86 | <[\w\W]+> }[\w\W]+> |
78 | <[\w\W]+> this.selector = selector;[\w\W]+> |
|
87 | <[\w\W]+> return this;[\w\W]+> |
79 | <[\w\W]+> return this;[\w\W]+> |
|
88 | <[\w\W]+> }[\w\W]+> |
80 | <[\w\W]+> }[\w\W]+> |
|
89 | |
81 | |
|
90 | <[\w\W]+> // HANDLE: $(expr, $(...))[\w\W]+> |
82 | <[\w\W]+> // HANDLE: $(expr, $(...))[\w\W]+> |
|
91 | <[\w\W]+> } else if ( !context || context.jquery ) {[\w\W]+> |
83 | <[\w\W]+> } else if ( !context || context.jquery ) {[\w\W]+> |
|
92 | <[\w\W]+> return ( context || root ).find( selector );[\w\W]+> |
84 | <[\w\W]+> return ( context || rootjQuery ).find( selector );[\w\W]+> |
|
93 | |
85 | |
|
94 | <[\w\W]+> // HANDLE: $(expr, context)[\w\W]+> |
86 | <[\w\W]+> // HANDLE: $(expr, context)[\w\W]+> |
|
95 | <[\w\W]+> // (which is just equivalent to: $(context).find(expr)[\w\W]+> |
87 | <[\w\W]+> // (which is just equivalent to: $(context).find(expr)[\w\W]+> |
|
96 | <[\w\W]+> } else {[\w\W]+> |
88 | <[\w\W]+> } else {[\w\W]+> |
|
97 | <[\w\W]+> return this.constructor( context ).find( selector );[\w\W]+> |
89 | <[\w\W]+> return this.constructor( context ).find( selector );[\w\W]+> |
|
98 | <[\w\W]+> }[\w\W]+> |
90 | <[\w\W]+> }[\w\W]+> |
|
99 | |
91 | |
|
100 | <[\w\W]+> // HANDLE: $(DOMElement)[\w\W]+> |
92 | <[\w\W]+> // HANDLE: $(DOMElement)[\w\W]+> |
|
101 | <[\w\W]+> } else if ( selector.nodeType ) {[\w\W]+> |
93 | <[\w\W]+> } else if ( selector.nodeType ) {[\w\W]+> |
|
102 | <[\w\W]+> this[ 0 ] = selector;[\w\W]+> |
94 | <[\w\W]+> this.context = this[0] = selector;[\w\W]+> |
|
103 | <[\w\W]+> this.length = 1;[\w\W]+> |
95 | <[\w\W]+> this.length = 1;[\w\W]+> |
|
104 | <[\w\W]+> return this;[\w\W]+> |
96 | <[\w\W]+> return this;[\w\W]+> |
|
105 | |
97 | |
|
106 | <[\w\W]+> // HANDLE: $(function)[\w\W]+> |
98 | <[\w\W]+> // HANDLE: $(function)[\w\W]+> |
|
107 | <[\w\W]+> // Shortcut for document ready[\w\W]+> |
99 | <[\w\W]+> // Shortcut for document ready[\w\W]+> |
|
108 | <[\w\W]+> } else if ( jQuery.isFunction( selector ) ) {[\w\W]+> |
100 | <[\w\W]+> } else if ( jQuery.isFunction( selector ) ) {[\w\W]+> |
|
109 | <[\w\W]+> return root.ready !== undefined ?[\w\W]+> |
101 | <[\w\W]+> return typeof rootjQuery.ready !== "undefined" ?[\w\W]+> |
|
110 | <[\w\W]+> root.ready( selector ) :[\w\W]+> |
102 | <[\w\W]+> rootjQuery.ready( selector ) :[\w\W]+> |
|
111 | |
- | ||
112 | <[\w\W]+> // Execute immediately if ready is not present[\w\W]+> |
103 | <[\w\W]+> // Execute immediately if ready is not present[\w\W]+> |
|
113 | <[\w\W]+> selector( jQuery );[\w\W]+> |
104 | <[\w\W]+> selector( jQuery );[\w\W]+> |
|
114 | <[\w\W]+> }[\w\W]+> |
105 | <[\w\W]+> }[\w\W]+> |
|
- | 106 | |
||
- | 107 | <[\w\W]+> if ( selector.selector !== undefined ) {[\w\W]+> |
||
- | 108 | <[\w\W]+> this.selector = selector.selector;[\w\W]+> |
||
- | 109 | <[\w\W]+> this.context = selector.context;[\w\W]+> |
||
- | 110 | <[\w\W]+> }[\w\W]+> |
||
115 | |
111 | |
|
116 | <[\w\W]+> return jQuery.makeArray( selector, this );[\w\W]+> |
112 | <[\w\W]+> return jQuery.makeArray( selector, this );[\w\W]+> |
|
117 | <[\w\W]+> };[\w\W]+> |
113 | <[\w\W]+> };[\w\W]+> |
|
118 | |
114 | |
|
119 | <[\w\W]+>// Give the init function the jQuery prototype for later instantiation[\w\W]+> |
115 | <[\w\W]+>// Give the init function the jQuery prototype for later instantiation[\w\W]+> |
|
120 | <[\w\W]+>init.prototype = jQuery.fn;[\w\W]+> |
116 | <[\w\W]+>init.prototype = jQuery.fn;[\w\W]+> |
|
121 | |
117 | |
|
122 | <[\w\W]+>// Initialize central reference[\w\W]+> |
118 | <[\w\W]+>// Initialize central reference[\w\W]+> |
|
123 | <[\w\W]+>rootjQuery = jQuery( document );[\w\W]+> |
119 | <[\w\W]+>rootjQuery = jQuery( document );[\w\W]+> |
|
124 | |
120 | |
|
125 | <[\w\W]+>return init;[\w\W]+> |
121 | <[\w\W]+>return init;[\w\W]+> |
|
126 | |
122 | |
|
127 | <[\w\W]+>} );[\w\W]+> |
123 | <[\w\W]+>});[\w\W]+> |
|
128 | |
124 | |