compass-jquery-plugin 0.3.2.2 → 0.3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +5 -2
- data/VERSION.yml +1 -1
- data/lib/jquery/jqgrid/jqgrid.rb +2 -2
- data/templates/dynatree/jquery.dynatree.js +1 -1
- data/templates/dynatree/jquery.dynatree.min.js +1 -1
- data/templates/jqtouch/jquery/touch/jqtouch.scss +8 -4
- data/templates/jquery/jquery.js +1968 -866
- data/templates/jquery/jquery.min.js +166 -152
- data/templates/jquery/jquery.pngFix.js +101 -1
- data/templates/jquery/jquery.pngFix.min.js +5 -2
- data/templates/jquery/jquery/ui/pngFix/blank.gif +0 -0
- data/templates/jquery/manifest.rb +1 -0
- metadata +5 -4
data/README.md
CHANGED
|
@@ -5,12 +5,14 @@ Get gem from [Gemcutter][1].
|
|
|
5
5
|
|
|
6
6
|
Get source from [github][2].
|
|
7
7
|
|
|
8
|
+
Get example application showing everything live from [github][39].
|
|
9
|
+
|
|
8
10
|
Description
|
|
9
11
|
-----------
|
|
10
12
|
|
|
11
13
|
A Sass-based Meta-Framework for Compass that allows you to mix and match any of the following:
|
|
12
14
|
|
|
13
|
-
* jRails with jQuery 1.
|
|
15
|
+
* jRails with jQuery 1.5.0 and jQuery.UI 1.8.9 including themes
|
|
14
16
|
* jQuery Tools 1.2.5
|
|
15
17
|
* jquery.jstree.js V1.0rc3
|
|
16
18
|
* jquery.dynatree.js V1.0.2
|
|
@@ -286,7 +288,7 @@ Copyright © 2009-2011 Kosmas Schuetz. See LICENSE for details.
|
|
|
286
288
|
|
|
287
289
|
[1]: http://gemcutter.org/gems/compass-jquery-plugin
|
|
288
290
|
[2]: http://github.com/kosmas58/compass-jquery-plugin
|
|
289
|
-
[3]: http://
|
|
291
|
+
[3]: http://compass-style.org/docs/
|
|
290
292
|
[4]: http://groups.google.com/group/ruby-bundler/msg/e375ee77b225609f
|
|
291
293
|
[5]: http://code.google.com/p/ennerchi/
|
|
292
294
|
[6]: http://github.com/dturnbull/compass-jquery/tree/master
|
|
@@ -322,4 +324,5 @@ Copyright © 2009-2011 Kosmas Schuetz. See LICENSE for details.
|
|
|
322
324
|
[36]: http://github.com/cowboy/jquery-replacetext
|
|
323
325
|
[37]: http://github.com/cowboy/jquery-dotimeout
|
|
324
326
|
[38]: http://github.com/gamache/DSt
|
|
327
|
+
[39]: http://github.com/kosmas58/compass-jquery-plugin-sample
|
|
325
328
|
|
data/VERSION.yml
CHANGED
data/lib/jquery/jqgrid/jqgrid.rb
CHANGED
|
@@ -24,11 +24,11 @@ module ActionView
|
|
|
24
24
|
:add => 'false',
|
|
25
25
|
:delete => 'false',
|
|
26
26
|
:search => 'true',
|
|
27
|
-
:edit => 'false',
|
|
27
|
+
:edit => 'false',
|
|
28
28
|
:inline_edit => 'false',
|
|
29
29
|
:autowidth => 'false',
|
|
30
30
|
:hidegrid => 'false',
|
|
31
|
-
:rownumbers => 'false'
|
|
31
|
+
:rownumbers => 'false'
|
|
32
32
|
}.merge(options)
|
|
33
33
|
|
|
34
34
|
# Stringify options values
|
|
@@ -498,7 +498,7 @@ DynaTreeNode.prototype = {
|
|
|
498
498
|
return;
|
|
499
499
|
}
|
|
500
500
|
cmp = cmp || function(a, b) {
|
|
501
|
-
return a.data.title === b.data.title ? 0 : a.data.title > b.data.title;
|
|
501
|
+
return a.data.title === b.data.title ? 0 : a.data.title > b.data.title ? 1 : -1;
|
|
502
502
|
};
|
|
503
503
|
cl.sort(cmp);
|
|
504
504
|
if( deep ){
|
|
@@ -11,7 +11,7 @@ j.push(h.combinedExpanderPrefix+(this.bExpanded?"e":"c")+(e.isLazy&&this.childLi
|
|
|
11
11
|
f.fx&&c===e){d=f.fx.duration||200;g(this.ul).animate(f.fx,d)}else this.ul.style.display=this.bExpanded||!d?"":"none"}},getKeyPath:function(a){var b=[];this.visitParents(function(c){c.parent&&b.unshift(c.data.key)},!a);return"/"+b.join(this.tree.options.keyPathSeparator)},getParent:function(){return this.parent},getChildren:function(){return this.childList},hasChildren:function(){if(this.data.isLazy){if(this.childList===null||this.childList===undefined)return;else if(this.childList.length===0)return false;
|
|
12
12
|
else if(this.childList.length===1&&this.childList[0].isStatusNode())return;return true}return!!this.childList},isFirstSibling:function(){var a=this.parent;return!a||a.childList[0]===this},isLastSibling:function(){var a=this.parent;return!a||a.childList[a.childList.length-1]===this},getPrevSibling:function(){if(!this.parent)return null;for(var a=this.parent.childList,b=1,c=a.length;b<c;b++)if(a[b]===this)return a[b-1];return null},getNextSibling:function(){if(!this.parent)return null;for(var a=this.parent.childList,
|
|
13
13
|
b=0,c=a.length-1;b<c;b++)if(a[b]===this)return a[b+1];return null},isStatusNode:function(){return this.data.isStatusNode===true},isChildOf:function(a){return this.parent&&this.parent===a},isDescendantOf:function(a){if(!a)return false;for(var b=this.parent;b;){if(b===a)return true;b=b.parent}return false},countChildren:function(){var a=this.childList;if(!a)return 0;for(var b=a.length,c=0,d=b;c<d;c++)b+=a[c].countChildren();return b},sortChildren:function(a,b){var c=this.childList;if(c){a=a||function(f,
|
|
14
|
-
h){return f.data.title===h.data.title?0:f.data.title>h.data.title};c.sort(a);if(b)for(var d=0,e=c.length;d<e;d++)c[d].childList&&c[d].sortChildren(a,"$norender$");b!=="$norender$"&&this.render()}},_setStatusNode:function(a){var b=this.childList?this.childList[0]:null;if(a)if(b){a.isStatusNode=true;a.key="_statusNode";b.data=a;b.render()}else{a.isStatusNode=true;a.key="_statusNode";this.addChild(a)}else if(b&&b.isStatusNode()){try{this.ul&&this.ul.removeChild(b.li)}catch(c){}if(this.childList.length===
|
|
14
|
+
h){return f.data.title===h.data.title?0:f.data.title>h.data.title?1:-1};c.sort(a);if(b)for(var d=0,e=c.length;d<e;d++)c[d].childList&&c[d].sortChildren(a,"$norender$");b!=="$norender$"&&this.render()}},_setStatusNode:function(a){var b=this.childList?this.childList[0]:null;if(a)if(b){a.isStatusNode=true;a.key="_statusNode";b.data=a;b.render()}else{a.isStatusNode=true;a.key="_statusNode";this.addChild(a)}else if(b&&b.isStatusNode()){try{this.ul&&this.ul.removeChild(b.li)}catch(c){}if(this.childList.length===
|
|
15
15
|
1)this.childList=[];else this.childList.shift()}},setLazyNodeStatus:function(a,b){var c=b&&b.tooltip?b.tooltip:null,d=b&&b.info?" ("+b.info+")":"";switch(a){case DTNodeStatus_Ok:this._setStatusNode(null);g(this.span).removeClass(this.tree.options.classNames.nodeLoading);this.isLoading=false;this.render();if(this.tree.options.autoFocus)this===this.tree.tnRoot&&this.childList&&this.childList.length>0?this.childList[0].focus():this.focus();break;case DTNodeStatus_Loading:this.isLoading=true;g(this.span).addClass(this.tree.options.classNames.nodeLoading);
|
|
16
16
|
this.parent||this._setStatusNode({title:this.tree.options.strings.loading+d,tooltip:c,addClass:this.tree.options.classNames.nodeWait});break;case DTNodeStatus_Error:this.isLoading=false;this._setStatusNode({title:this.tree.options.strings.loadError+d,tooltip:c,addClass:this.tree.options.classNames.nodeError});break;default:throw"Bad LazyNodeStatus: '"+a+"'.";}},_parentList:function(a,b){for(var c=[],d=b?this:this.parent;d;){if(a||d.parent)c.unshift(d);d=d.parent}return c},getLevel:function(){for(var a=
|
|
17
17
|
0,b=this.parent;b;){a++;b=b.parent}return a},_getTypeForOuterNodeEvent:function(a){var b=this.tree.options.classNames,c=a.target;if(c.className.indexOf(b.node)<0)return null;var d=a.pageX-c.offsetLeft;a=a.pageY-c.offsetTop;for(var e=0,f=c.childNodes.length;e<f;e++){var h=c.childNodes[e],i=h.offsetLeft-c.offsetLeft,j=h.offsetTop-c.offsetTop,k=h.clientWidth,r=h.clientHeight;if(d>=i&&d<=i+k&&a>=j&&a<=j+r)if(h.className==b.title)return"title";else if(h.className==b.expander)return"expander";else if(h.className==
|
|
@@ -174,9 +174,11 @@ body {
|
|
|
174
174
|
|
|
175
175
|
@-webkit-keyframes slideLeftOut {
|
|
176
176
|
0% {
|
|
177
|
-
-webkit-transform: translateX(0px);
|
|
177
|
+
-webkit-transform: translateX(0px);
|
|
178
|
+
opacity: 1; }
|
|
178
179
|
100% {
|
|
179
|
-
-webkit-transform: translateX(-100%);
|
|
180
|
+
-webkit-transform: translateX(-100%);
|
|
181
|
+
opacity: 0; } }
|
|
180
182
|
|
|
181
183
|
|
|
182
184
|
/* Slide Right */
|
|
@@ -190,9 +192,11 @@ body {
|
|
|
190
192
|
|
|
191
193
|
@-webkit-keyframes slideRightOut {
|
|
192
194
|
0% {
|
|
193
|
-
-webkit-transform: translateX(0);
|
|
195
|
+
-webkit-transform: translateX(0);
|
|
196
|
+
opacity: 1; }
|
|
194
197
|
100% {
|
|
195
|
-
-webkit-transform: translateX(100%);
|
|
198
|
+
-webkit-transform: translateX(100%);
|
|
199
|
+
opacity: 0; } }
|
|
196
200
|
|
|
197
201
|
|
|
198
202
|
/* Slide Up */
|
data/templates/jquery/jquery.js
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* jQuery JavaScript Library v@VERSION
|
|
3
3
|
* http://jquery.com/
|
|
4
4
|
*
|
|
5
|
-
* Copyright
|
|
5
|
+
* Copyright 2011, John Resig
|
|
6
6
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
7
7
|
* http://jquery.org/license
|
|
8
8
|
*
|
|
9
9
|
* Includes Sizzle.js
|
|
10
10
|
* http://sizzlejs.com/
|
|
11
|
-
* Copyright
|
|
11
|
+
* Copyright 2011, The Dojo Foundation
|
|
12
12
|
* Released under the MIT, BSD, and GPL Licenses.
|
|
13
13
|
*
|
|
14
|
-
* Date:
|
|
14
|
+
* Date: @DATE
|
|
15
15
|
*/
|
|
16
16
|
(function( window, undefined ) {
|
|
17
17
|
|
|
@@ -24,7 +24,7 @@ var jQuery = (function() {
|
|
|
24
24
|
// Define a local copy of jQuery
|
|
25
25
|
var jQuery = function( selector, context ) {
|
|
26
26
|
// The jQuery object is actually just the init constructor 'enhanced'
|
|
27
|
-
return new jQuery.fn.init( selector, context );
|
|
27
|
+
return new jQuery.fn.init( selector, context, rootjQuery );
|
|
28
28
|
},
|
|
29
29
|
|
|
30
30
|
// Map over jQuery in case of overwrite
|
|
@@ -40,20 +40,13 @@ var jQuery = function( selector, context ) {
|
|
|
40
40
|
// (both of which we optimize for)
|
|
41
41
|
quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
|
|
42
42
|
|
|
43
|
-
// Is it a simple selector
|
|
44
|
-
isSimple = /^.[^:#\[\.,]*$/,
|
|
45
|
-
|
|
46
43
|
// Check if a string has a non-whitespace character in it
|
|
47
44
|
rnotwhite = /\S/,
|
|
48
|
-
rwhite = /\s/,
|
|
49
45
|
|
|
50
46
|
// Used for trimming whitespace
|
|
51
47
|
trimLeft = /^\s+/,
|
|
52
48
|
trimRight = /\s+$/,
|
|
53
49
|
|
|
54
|
-
// Check for non-word characters
|
|
55
|
-
rnonword = /\W/,
|
|
56
|
-
|
|
57
50
|
// Check for digits
|
|
58
51
|
rdigit = /\d/,
|
|
59
52
|
|
|
@@ -77,12 +70,23 @@ var jQuery = function( selector, context ) {
|
|
|
77
70
|
|
|
78
71
|
// For matching the engine and version of the browser
|
|
79
72
|
browserMatch,
|
|
80
|
-
|
|
73
|
+
|
|
81
74
|
// Has the ready events already been bound?
|
|
82
75
|
readyBound = false,
|
|
83
|
-
|
|
84
|
-
// The
|
|
85
|
-
readyList
|
|
76
|
+
|
|
77
|
+
// The deferred used on DOM ready
|
|
78
|
+
readyList,
|
|
79
|
+
|
|
80
|
+
// Promise methods (with equivalent for invert)
|
|
81
|
+
promiseMethods = {
|
|
82
|
+
then: 0, // will be overwritten for invert
|
|
83
|
+
done: "fail",
|
|
84
|
+
fail: "done",
|
|
85
|
+
isResolved: "isRejected",
|
|
86
|
+
isRejected: "isResolved",
|
|
87
|
+
promise: "invert",
|
|
88
|
+
invert: "promise"
|
|
89
|
+
},
|
|
86
90
|
|
|
87
91
|
// The ready event handler
|
|
88
92
|
DOMContentLoaded,
|
|
@@ -94,12 +98,13 @@ var jQuery = function( selector, context ) {
|
|
|
94
98
|
slice = Array.prototype.slice,
|
|
95
99
|
trim = String.prototype.trim,
|
|
96
100
|
indexOf = Array.prototype.indexOf,
|
|
97
|
-
|
|
101
|
+
|
|
98
102
|
// [[Class]] -> type pairs
|
|
99
103
|
class2type = {};
|
|
100
104
|
|
|
101
105
|
jQuery.fn = jQuery.prototype = {
|
|
102
|
-
|
|
106
|
+
constructor: jQuery,
|
|
107
|
+
init: function( selector, context, rootjQuery ) {
|
|
103
108
|
var match, elem, ret, doc;
|
|
104
109
|
|
|
105
110
|
// Handle $(""), $(null), or $(undefined)
|
|
@@ -113,7 +118,7 @@ jQuery.fn = jQuery.prototype = {
|
|
|
113
118
|
this.length = 1;
|
|
114
119
|
return this;
|
|
115
120
|
}
|
|
116
|
-
|
|
121
|
+
|
|
117
122
|
// The body element only exists once, optimize finding it
|
|
118
123
|
if ( selector === "body" && !context && document.body ) {
|
|
119
124
|
this.context = document;
|
|
@@ -133,6 +138,7 @@ jQuery.fn = jQuery.prototype = {
|
|
|
133
138
|
|
|
134
139
|
// HANDLE: $(html) -> $(array)
|
|
135
140
|
if ( match[1] ) {
|
|
141
|
+
context = context instanceof jQuery ? context[0] : context;
|
|
136
142
|
doc = (context ? context.ownerDocument || context : document);
|
|
137
143
|
|
|
138
144
|
// If a single string is passed in and it's a single tag
|
|
@@ -150,11 +156,11 @@ jQuery.fn = jQuery.prototype = {
|
|
|
150
156
|
|
|
151
157
|
} else {
|
|
152
158
|
ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
|
|
153
|
-
selector = (ret.cacheable ? ret.fragment
|
|
159
|
+
selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
|
|
154
160
|
}
|
|
155
|
-
|
|
161
|
+
|
|
156
162
|
return jQuery.merge( this, selector );
|
|
157
|
-
|
|
163
|
+
|
|
158
164
|
// HANDLE: $("#id")
|
|
159
165
|
} else {
|
|
160
166
|
elem = document.getElementById( match[2] );
|
|
@@ -178,13 +184,6 @@ jQuery.fn = jQuery.prototype = {
|
|
|
178
184
|
return this;
|
|
179
185
|
}
|
|
180
186
|
|
|
181
|
-
// HANDLE: $("TAG")
|
|
182
|
-
} else if ( !context && !rnonword.test( selector ) ) {
|
|
183
|
-
this.selector = selector;
|
|
184
|
-
this.context = document;
|
|
185
|
-
selector = document.getElementsByTagName( selector );
|
|
186
|
-
return jQuery.merge( this, selector );
|
|
187
|
-
|
|
188
187
|
// HANDLE: $(expr, $(...))
|
|
189
188
|
} else if ( !context || context.jquery ) {
|
|
190
189
|
return (context || rootjQuery).find( selector );
|
|
@@ -192,7 +191,7 @@ jQuery.fn = jQuery.prototype = {
|
|
|
192
191
|
// HANDLE: $(expr, context)
|
|
193
192
|
// (which is just equivalent to: $(context).find(expr)
|
|
194
193
|
} else {
|
|
195
|
-
return
|
|
194
|
+
return this.constructor( context ).find( selector );
|
|
196
195
|
}
|
|
197
196
|
|
|
198
197
|
// HANDLE: $(function)
|
|
@@ -236,18 +235,18 @@ jQuery.fn = jQuery.prototype = {
|
|
|
236
235
|
this.toArray() :
|
|
237
236
|
|
|
238
237
|
// Return just the object
|
|
239
|
-
( num < 0 ? this.
|
|
238
|
+
( num < 0 ? this[ this.length + num ] : this[ num ] );
|
|
240
239
|
},
|
|
241
240
|
|
|
242
241
|
// Take an array of elements and push it onto the stack
|
|
243
242
|
// (returning the new matched element set)
|
|
244
243
|
pushStack: function( elems, name, selector ) {
|
|
245
244
|
// Build a new jQuery matched element set
|
|
246
|
-
var ret =
|
|
245
|
+
var ret = this.constructor();
|
|
247
246
|
|
|
248
247
|
if ( jQuery.isArray( elems ) ) {
|
|
249
248
|
push.apply( ret, elems );
|
|
250
|
-
|
|
249
|
+
|
|
251
250
|
} else {
|
|
252
251
|
jQuery.merge( ret, elems );
|
|
253
252
|
}
|
|
@@ -273,25 +272,17 @@ jQuery.fn = jQuery.prototype = {
|
|
|
273
272
|
each: function( callback, args ) {
|
|
274
273
|
return jQuery.each( this, callback, args );
|
|
275
274
|
},
|
|
276
|
-
|
|
275
|
+
|
|
277
276
|
ready: function( fn ) {
|
|
278
277
|
// Attach the listeners
|
|
279
278
|
jQuery.bindReady();
|
|
280
279
|
|
|
281
|
-
//
|
|
282
|
-
|
|
283
|
-
// Execute the function immediately
|
|
284
|
-
fn.call( document, jQuery );
|
|
285
|
-
|
|
286
|
-
// Otherwise, remember the function for later
|
|
287
|
-
} else if ( readyList ) {
|
|
288
|
-
// Add the function to the wait list
|
|
289
|
-
readyList.push( fn );
|
|
290
|
-
}
|
|
280
|
+
// Add the callback
|
|
281
|
+
readyList.done( fn );
|
|
291
282
|
|
|
292
283
|
return this;
|
|
293
284
|
},
|
|
294
|
-
|
|
285
|
+
|
|
295
286
|
eq: function( i ) {
|
|
296
287
|
return i === -1 ?
|
|
297
288
|
this.slice( i ) :
|
|
@@ -316,9 +307,9 @@ jQuery.fn = jQuery.prototype = {
|
|
|
316
307
|
return callback.call( elem, i, elem );
|
|
317
308
|
}));
|
|
318
309
|
},
|
|
319
|
-
|
|
310
|
+
|
|
320
311
|
end: function() {
|
|
321
|
-
return this.prevObject ||
|
|
312
|
+
return this.prevObject || this.constructor(null);
|
|
322
313
|
},
|
|
323
314
|
|
|
324
315
|
// For internal use only.
|
|
@@ -405,14 +396,14 @@ jQuery.extend({
|
|
|
405
396
|
|
|
406
397
|
return jQuery;
|
|
407
398
|
},
|
|
408
|
-
|
|
399
|
+
|
|
409
400
|
// Is the DOM ready to be used? Set to true once it occurs.
|
|
410
401
|
isReady: false,
|
|
411
402
|
|
|
412
403
|
// A counter to track how many items to wait for before
|
|
413
404
|
// the ready event fires. See #6781
|
|
414
405
|
readyWait: 1,
|
|
415
|
-
|
|
406
|
+
|
|
416
407
|
// Handle when the DOM is ready
|
|
417
408
|
ready: function( wait ) {
|
|
418
409
|
// A third-party is pushing the ready event forwards
|
|
@@ -436,27 +427,15 @@ jQuery.extend({
|
|
|
436
427
|
}
|
|
437
428
|
|
|
438
429
|
// If there are functions bound, to execute
|
|
439
|
-
|
|
440
|
-
// Execute all of them
|
|
441
|
-
var fn,
|
|
442
|
-
i = 0,
|
|
443
|
-
ready = readyList;
|
|
444
|
-
|
|
445
|
-
// Reset the list of functions
|
|
446
|
-
readyList = null;
|
|
447
|
-
|
|
448
|
-
while ( (fn = ready[ i++ ]) ) {
|
|
449
|
-
fn.call( document, jQuery );
|
|
450
|
-
}
|
|
430
|
+
readyList.resolveWith( document, [ jQuery ] );
|
|
451
431
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
432
|
+
// Trigger any bound ready events
|
|
433
|
+
if ( jQuery.fn.trigger ) {
|
|
434
|
+
jQuery( document ).trigger( "ready" ).unbind( "ready" );
|
|
456
435
|
}
|
|
457
436
|
}
|
|
458
437
|
},
|
|
459
|
-
|
|
438
|
+
|
|
460
439
|
bindReady: function() {
|
|
461
440
|
if ( readyBound ) {
|
|
462
441
|
return;
|
|
@@ -475,7 +454,7 @@ jQuery.extend({
|
|
|
475
454
|
if ( document.addEventListener ) {
|
|
476
455
|
// Use the handy event callback
|
|
477
456
|
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
|
|
478
|
-
|
|
457
|
+
|
|
479
458
|
// A fallback to window.onload, that will always work
|
|
480
459
|
window.addEventListener( "load", jQuery.ready, false );
|
|
481
460
|
|
|
@@ -484,7 +463,7 @@ jQuery.extend({
|
|
|
484
463
|
// ensure firing before onload,
|
|
485
464
|
// maybe late but safe also for iframes
|
|
486
465
|
document.attachEvent("onreadystatechange", DOMContentLoaded);
|
|
487
|
-
|
|
466
|
+
|
|
488
467
|
// A fallback to window.onload, that will always work
|
|
489
468
|
window.attachEvent( "onload", jQuery.ready );
|
|
490
469
|
|
|
@@ -535,20 +514,20 @@ jQuery.extend({
|
|
|
535
514
|
if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
|
536
515
|
return false;
|
|
537
516
|
}
|
|
538
|
-
|
|
517
|
+
|
|
539
518
|
// Not own constructor property must be Object
|
|
540
519
|
if ( obj.constructor &&
|
|
541
520
|
!hasOwn.call(obj, "constructor") &&
|
|
542
521
|
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
|
|
543
522
|
return false;
|
|
544
523
|
}
|
|
545
|
-
|
|
524
|
+
|
|
546
525
|
// Own properties are enumerated firstly, so to speed up,
|
|
547
526
|
// if last one is own, then all properties are own.
|
|
548
|
-
|
|
527
|
+
|
|
549
528
|
var key;
|
|
550
529
|
for ( key in obj ) {}
|
|
551
|
-
|
|
530
|
+
|
|
552
531
|
return key === undefined || hasOwn.call( obj, key );
|
|
553
532
|
},
|
|
554
533
|
|
|
@@ -558,11 +537,11 @@ jQuery.extend({
|
|
|
558
537
|
}
|
|
559
538
|
return true;
|
|
560
539
|
},
|
|
561
|
-
|
|
540
|
+
|
|
562
541
|
error: function( msg ) {
|
|
563
542
|
throw msg;
|
|
564
543
|
},
|
|
565
|
-
|
|
544
|
+
|
|
566
545
|
parseJSON: function( data ) {
|
|
567
546
|
if ( typeof data !== "string" || !data ) {
|
|
568
547
|
return null;
|
|
@@ -570,7 +549,7 @@ jQuery.extend({
|
|
|
570
549
|
|
|
571
550
|
// Make sure leading/trailing whitespace is removed (IE can't handle it)
|
|
572
551
|
data = jQuery.trim( data );
|
|
573
|
-
|
|
552
|
+
|
|
574
553
|
// Make sure the incoming data is actual JSON
|
|
575
554
|
// Logic borrowed from http://json.org/json2.js
|
|
576
555
|
if ( rvalidchars.test(data.replace(rvalidescape, "@")
|
|
@@ -587,6 +566,28 @@ jQuery.extend({
|
|
|
587
566
|
}
|
|
588
567
|
},
|
|
589
568
|
|
|
569
|
+
// Cross-browser xml parsing
|
|
570
|
+
// (xml & tmp used internally)
|
|
571
|
+
parseXML: function( data , xml , tmp ) {
|
|
572
|
+
|
|
573
|
+
if ( window.DOMParser ) { // Standard
|
|
574
|
+
tmp = new DOMParser();
|
|
575
|
+
xml = tmp.parseFromString( data , "text/xml" );
|
|
576
|
+
} else { // IE
|
|
577
|
+
xml = new ActiveXObject( "Microsoft.XMLDOM" );
|
|
578
|
+
xml.async = "false";
|
|
579
|
+
xml.loadXML( data );
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
tmp = xml.documentElement;
|
|
583
|
+
|
|
584
|
+
if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
|
|
585
|
+
jQuery.error( "Invalid XML: " + data );
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
return xml;
|
|
589
|
+
},
|
|
590
|
+
|
|
590
591
|
noop: function() {},
|
|
591
592
|
|
|
592
593
|
// Evalulates a script in a global context
|
|
@@ -594,12 +595,10 @@ jQuery.extend({
|
|
|
594
595
|
if ( data && rnotwhite.test(data) ) {
|
|
595
596
|
// Inspired by code by Andrea Giammarchi
|
|
596
597
|
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
|
|
597
|
-
var head = document.getElementsByTagName("head")[0] || document.documentElement,
|
|
598
|
-
script = document.createElement("script");
|
|
599
|
-
|
|
600
|
-
script.type = "text/javascript";
|
|
598
|
+
var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement,
|
|
599
|
+
script = document.createElement( "script" );
|
|
601
600
|
|
|
602
|
-
if ( jQuery.support.scriptEval ) {
|
|
601
|
+
if ( jQuery.support.scriptEval() ) {
|
|
603
602
|
script.appendChild( document.createTextNode( data ) );
|
|
604
603
|
} else {
|
|
605
604
|
script.text = data;
|
|
@@ -712,7 +711,7 @@ jQuery.extend({
|
|
|
712
711
|
for ( var l = second.length; j < l; j++ ) {
|
|
713
712
|
first[ i++ ] = second[ j ];
|
|
714
713
|
}
|
|
715
|
-
|
|
714
|
+
|
|
716
715
|
} else {
|
|
717
716
|
while ( second[j] !== undefined ) {
|
|
718
717
|
first[ i++ ] = second[ j++ ];
|
|
@@ -754,6 +753,7 @@ jQuery.extend({
|
|
|
754
753
|
}
|
|
755
754
|
}
|
|
756
755
|
|
|
756
|
+
// Flatten any nested arrays
|
|
757
757
|
return ret.concat.apply( [], ret );
|
|
758
758
|
},
|
|
759
759
|
|
|
@@ -792,7 +792,7 @@ jQuery.extend({
|
|
|
792
792
|
// The value/s can be optionally by executed if its a function
|
|
793
793
|
access: function( elems, key, value, exec, fn, pass ) {
|
|
794
794
|
var length = elems.length;
|
|
795
|
-
|
|
795
|
+
|
|
796
796
|
// Setting many attributes
|
|
797
797
|
if ( typeof key === "object" ) {
|
|
798
798
|
for ( var k in key ) {
|
|
@@ -800,19 +800,19 @@ jQuery.extend({
|
|
|
800
800
|
}
|
|
801
801
|
return elems;
|
|
802
802
|
}
|
|
803
|
-
|
|
803
|
+
|
|
804
804
|
// Setting one attribute
|
|
805
805
|
if ( value !== undefined ) {
|
|
806
806
|
// Optionally, function values get executed if exec is true
|
|
807
807
|
exec = !pass && exec && jQuery.isFunction(value);
|
|
808
|
-
|
|
808
|
+
|
|
809
809
|
for ( var i = 0; i < length; i++ ) {
|
|
810
810
|
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
|
811
811
|
}
|
|
812
|
-
|
|
812
|
+
|
|
813
813
|
return elems;
|
|
814
814
|
}
|
|
815
|
-
|
|
815
|
+
|
|
816
816
|
// Getting an attribute
|
|
817
817
|
return length ? fn( elems[0], key ) : undefined;
|
|
818
818
|
},
|
|
@@ -821,6 +821,173 @@ jQuery.extend({
|
|
|
821
821
|
return (new Date()).getTime();
|
|
822
822
|
},
|
|
823
823
|
|
|
824
|
+
// Create a simple deferred (one callbacks list)
|
|
825
|
+
_Deferred: function() {
|
|
826
|
+
var // callbacks list
|
|
827
|
+
callbacks = [],
|
|
828
|
+
// stored [ context , args ]
|
|
829
|
+
fired,
|
|
830
|
+
// to avoid firing when already doing so
|
|
831
|
+
firing,
|
|
832
|
+
// flag to know if the deferred has been cancelled
|
|
833
|
+
cancelled,
|
|
834
|
+
// the deferred itself
|
|
835
|
+
deferred = {
|
|
836
|
+
|
|
837
|
+
// done( f1, f2, ...)
|
|
838
|
+
done: function() {
|
|
839
|
+
if ( !cancelled ) {
|
|
840
|
+
var args = arguments,
|
|
841
|
+
i,
|
|
842
|
+
length,
|
|
843
|
+
elem,
|
|
844
|
+
type,
|
|
845
|
+
_fired;
|
|
846
|
+
if ( fired ) {
|
|
847
|
+
_fired = fired;
|
|
848
|
+
fired = 0;
|
|
849
|
+
}
|
|
850
|
+
for ( i = 0, length = args.length; i < length; i++ ) {
|
|
851
|
+
elem = args[ i ];
|
|
852
|
+
type = jQuery.type( elem );
|
|
853
|
+
if ( type === "array" ) {
|
|
854
|
+
deferred.done.apply( deferred, elem );
|
|
855
|
+
} else if ( type === "function" ) {
|
|
856
|
+
callbacks.push( elem );
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
if ( _fired ) {
|
|
860
|
+
deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
return this;
|
|
864
|
+
},
|
|
865
|
+
|
|
866
|
+
// resolve with given context and args
|
|
867
|
+
resolveWith: function( context, args ) {
|
|
868
|
+
if ( !cancelled && !fired && !firing ) {
|
|
869
|
+
firing = 1;
|
|
870
|
+
try {
|
|
871
|
+
while( callbacks[ 0 ] ) {
|
|
872
|
+
callbacks.shift().apply( context, args );
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
finally {
|
|
876
|
+
fired = [ context, args ];
|
|
877
|
+
firing = 0;
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
return this;
|
|
881
|
+
},
|
|
882
|
+
|
|
883
|
+
// resolve with this as context and given arguments
|
|
884
|
+
resolve: function() {
|
|
885
|
+
deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments );
|
|
886
|
+
return this;
|
|
887
|
+
},
|
|
888
|
+
|
|
889
|
+
// Has this deferred been resolved?
|
|
890
|
+
isResolved: function() {
|
|
891
|
+
return !!( firing || fired );
|
|
892
|
+
},
|
|
893
|
+
|
|
894
|
+
// Cancel
|
|
895
|
+
cancel: function() {
|
|
896
|
+
cancelled = 1;
|
|
897
|
+
callbacks = [];
|
|
898
|
+
return this;
|
|
899
|
+
}
|
|
900
|
+
};
|
|
901
|
+
|
|
902
|
+
return deferred;
|
|
903
|
+
},
|
|
904
|
+
|
|
905
|
+
// Full fledged deferred (two callbacks list)
|
|
906
|
+
Deferred: function( func ) {
|
|
907
|
+
var deferred = jQuery._Deferred(),
|
|
908
|
+
failDeferred = jQuery._Deferred(),
|
|
909
|
+
promise,
|
|
910
|
+
invert;
|
|
911
|
+
// Add errorDeferred methods, then, promise and invert
|
|
912
|
+
jQuery.extend( deferred, {
|
|
913
|
+
then: function( doneCallbacks, failCallbacks ) {
|
|
914
|
+
deferred.done( doneCallbacks ).fail( failCallbacks );
|
|
915
|
+
return this;
|
|
916
|
+
},
|
|
917
|
+
fail: failDeferred.done,
|
|
918
|
+
rejectWith: failDeferred.resolveWith,
|
|
919
|
+
reject: failDeferred.resolve,
|
|
920
|
+
isRejected: failDeferred.isResolved,
|
|
921
|
+
// Get a promise for this deferred
|
|
922
|
+
// If obj is provided, the promise aspect is added to the object
|
|
923
|
+
promise: function( obj ) {
|
|
924
|
+
if ( obj == null ) {
|
|
925
|
+
if ( promise ) {
|
|
926
|
+
return promise;
|
|
927
|
+
}
|
|
928
|
+
promise = obj = {};
|
|
929
|
+
}
|
|
930
|
+
for( var methodName in promiseMethods ) {
|
|
931
|
+
obj[ methodName ] = deferred[ methodName ];
|
|
932
|
+
}
|
|
933
|
+
return obj;
|
|
934
|
+
},
|
|
935
|
+
// Get the invert promise for this deferred
|
|
936
|
+
// If obj is provided, the invert promise aspect is added to the object
|
|
937
|
+
invert: function( obj ) {
|
|
938
|
+
if ( obj == null ) {
|
|
939
|
+
if ( invert ) {
|
|
940
|
+
return invert;
|
|
941
|
+
}
|
|
942
|
+
invert = obj = {};
|
|
943
|
+
}
|
|
944
|
+
for( var methodName in promiseMethods ) {
|
|
945
|
+
obj[ methodName ] = promiseMethods[ methodName ] && deferred[ promiseMethods[methodName] ];
|
|
946
|
+
}
|
|
947
|
+
obj.then = invert.then || function( doneCallbacks, failCallbacks ) {
|
|
948
|
+
deferred.done( failCallbacks ).fail( doneCallbacks );
|
|
949
|
+
return this;
|
|
950
|
+
};
|
|
951
|
+
return obj;
|
|
952
|
+
}
|
|
953
|
+
} );
|
|
954
|
+
// Make sure only one callback list will be used
|
|
955
|
+
deferred.then( failDeferred.cancel, deferred.cancel );
|
|
956
|
+
// Unexpose cancel
|
|
957
|
+
delete deferred.cancel;
|
|
958
|
+
// Call given func if any
|
|
959
|
+
if ( func ) {
|
|
960
|
+
func.call( deferred, deferred );
|
|
961
|
+
}
|
|
962
|
+
return deferred;
|
|
963
|
+
},
|
|
964
|
+
|
|
965
|
+
// Deferred helper
|
|
966
|
+
when: function( object ) {
|
|
967
|
+
var args = arguments,
|
|
968
|
+
length = args.length,
|
|
969
|
+
deferred = length <= 1 && object && jQuery.isFunction( object.promise ) ?
|
|
970
|
+
object :
|
|
971
|
+
jQuery.Deferred(),
|
|
972
|
+
promise = deferred.promise(),
|
|
973
|
+
resolveArray;
|
|
974
|
+
|
|
975
|
+
if ( length > 1 ) {
|
|
976
|
+
resolveArray = new Array( length );
|
|
977
|
+
jQuery.each( args, function( index, element ) {
|
|
978
|
+
jQuery.when( element ).then( function( value ) {
|
|
979
|
+
resolveArray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value;
|
|
980
|
+
if( ! --length ) {
|
|
981
|
+
deferred.resolveWith( promise, resolveArray );
|
|
982
|
+
}
|
|
983
|
+
}, deferred.reject );
|
|
984
|
+
} );
|
|
985
|
+
} else if ( deferred !== object ) {
|
|
986
|
+
deferred.resolve( object );
|
|
987
|
+
}
|
|
988
|
+
return promise;
|
|
989
|
+
},
|
|
990
|
+
|
|
824
991
|
// Use of jQuery.browser is frowned upon.
|
|
825
992
|
// More details: http://docs.jquery.com/Utilities/jQuery.browser
|
|
826
993
|
uaMatch: function( ua ) {
|
|
@@ -835,9 +1002,33 @@ jQuery.extend({
|
|
|
835
1002
|
return { browser: match[1] || "", version: match[2] || "0" };
|
|
836
1003
|
},
|
|
837
1004
|
|
|
1005
|
+
sub: function() {
|
|
1006
|
+
function jQuerySubclass( selector, context ) {
|
|
1007
|
+
return new jQuerySubclass.fn.init( selector, context );
|
|
1008
|
+
}
|
|
1009
|
+
jQuery.extend( true, jQuerySubclass, this );
|
|
1010
|
+
jQuerySubclass.superclass = this;
|
|
1011
|
+
jQuerySubclass.fn = jQuerySubclass.prototype = this();
|
|
1012
|
+
jQuerySubclass.fn.constructor = jQuerySubclass;
|
|
1013
|
+
jQuerySubclass.subclass = this.subclass;
|
|
1014
|
+
jQuerySubclass.fn.init = function init( selector, context ) {
|
|
1015
|
+
if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {
|
|
1016
|
+
context = jQuerySubclass(context);
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );
|
|
1020
|
+
};
|
|
1021
|
+
jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;
|
|
1022
|
+
var rootjQuerySubclass = jQuerySubclass(document);
|
|
1023
|
+
return jQuerySubclass;
|
|
1024
|
+
},
|
|
1025
|
+
|
|
838
1026
|
browser: {}
|
|
839
1027
|
});
|
|
840
1028
|
|
|
1029
|
+
// Create readyList deferred
|
|
1030
|
+
readyList = jQuery._Deferred();
|
|
1031
|
+
|
|
841
1032
|
// Populate the class2type map
|
|
842
1033
|
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
|
|
843
1034
|
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
|
@@ -860,9 +1051,8 @@ if ( indexOf ) {
|
|
|
860
1051
|
};
|
|
861
1052
|
}
|
|
862
1053
|
|
|
863
|
-
//
|
|
864
|
-
|
|
865
|
-
if ( !rwhite.test( "\xA0" ) ) {
|
|
1054
|
+
// IE doesn't match non-breaking spaces with \s
|
|
1055
|
+
if ( rnotwhite.test( "\xA0" ) ) {
|
|
866
1056
|
trimLeft = /^[\s\xA0]+/;
|
|
867
1057
|
trimRight = /[\s\xA0]+$/;
|
|
868
1058
|
}
|
|
@@ -918,10 +1108,7 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
918
1108
|
|
|
919
1109
|
jQuery.support = {};
|
|
920
1110
|
|
|
921
|
-
var
|
|
922
|
-
script = document.createElement("script"),
|
|
923
|
-
div = document.createElement("div"),
|
|
924
|
-
id = "script" + jQuery.now();
|
|
1111
|
+
var div = document.createElement("div");
|
|
925
1112
|
|
|
926
1113
|
div.style.display = "none";
|
|
927
1114
|
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
|
@@ -978,7 +1165,7 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
978
1165
|
deleteExpando: true,
|
|
979
1166
|
optDisabled: false,
|
|
980
1167
|
checkClone: false,
|
|
981
|
-
|
|
1168
|
+
_scriptEval: null,
|
|
982
1169
|
noCloneEvent: true,
|
|
983
1170
|
boxModel: null,
|
|
984
1171
|
inlineBlockNeedsLayout: false,
|
|
@@ -991,32 +1178,46 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
991
1178
|
select.disabled = true;
|
|
992
1179
|
jQuery.support.optDisabled = !opt.disabled;
|
|
993
1180
|
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1181
|
+
jQuery.support.scriptEval = function() {
|
|
1182
|
+
if ( jQuery.support._scriptEval === null ) {
|
|
1183
|
+
var root = document.documentElement,
|
|
1184
|
+
script = document.createElement("script"),
|
|
1185
|
+
id = "script" + jQuery.now();
|
|
998
1186
|
|
|
999
|
-
|
|
1187
|
+
script.type = "text/javascript";
|
|
1188
|
+
try {
|
|
1189
|
+
script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
|
|
1190
|
+
} catch(e) {}
|
|
1000
1191
|
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1192
|
+
root.insertBefore( script, root.firstChild );
|
|
1193
|
+
|
|
1194
|
+
// Make sure that the execution of code works by injecting a script
|
|
1195
|
+
// tag with appendChild/createTextNode
|
|
1196
|
+
// (IE doesn't support this, fails, and uses .text instead)
|
|
1197
|
+
if ( window[ id ] ) {
|
|
1198
|
+
jQuery.support._scriptEval = true;
|
|
1199
|
+
delete window[ id ];
|
|
1200
|
+
} else {
|
|
1201
|
+
jQuery.support._scriptEval = false;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
root.removeChild( script );
|
|
1205
|
+
// release memory in IE
|
|
1206
|
+
root = script = id = null;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
return jQuery.support._scriptEval;
|
|
1210
|
+
};
|
|
1008
1211
|
|
|
1009
1212
|
// Test to see if it's possible to delete an expando from an element
|
|
1010
1213
|
// Fails in Internet Explorer
|
|
1011
1214
|
try {
|
|
1012
|
-
delete
|
|
1215
|
+
delete div.test;
|
|
1013
1216
|
|
|
1014
1217
|
} catch(e) {
|
|
1015
1218
|
jQuery.support.deleteExpando = false;
|
|
1016
1219
|
}
|
|
1017
1220
|
|
|
1018
|
-
root.removeChild( script );
|
|
1019
|
-
|
|
1020
1221
|
if ( div.attachEvent && div.fireEvent ) {
|
|
1021
1222
|
div.attachEvent("onclick", function click() {
|
|
1022
1223
|
// Cloning a node shouldn't copy over any
|
|
@@ -1039,10 +1240,16 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
1039
1240
|
// Figure out if the W3C box model works as expected
|
|
1040
1241
|
// document.body must exist before we can do this
|
|
1041
1242
|
jQuery(function() {
|
|
1042
|
-
var div = document.createElement("div")
|
|
1043
|
-
|
|
1243
|
+
var div = document.createElement("div"),
|
|
1244
|
+
body = document.getElementsByTagName("body")[0];
|
|
1245
|
+
|
|
1246
|
+
// Frameset documents with no body should not run this code
|
|
1247
|
+
if ( !body ) {
|
|
1248
|
+
return;
|
|
1249
|
+
}
|
|
1044
1250
|
|
|
1045
|
-
|
|
1251
|
+
div.style.width = div.style.paddingLeft = "1px";
|
|
1252
|
+
body.appendChild( div );
|
|
1046
1253
|
jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
|
|
1047
1254
|
|
|
1048
1255
|
if ( "zoom" in div.style ) {
|
|
@@ -1061,7 +1268,7 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
1061
1268
|
jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
|
|
1062
1269
|
}
|
|
1063
1270
|
|
|
1064
|
-
div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
|
|
1271
|
+
div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
|
|
1065
1272
|
var tds = div.getElementsByTagName("td");
|
|
1066
1273
|
|
|
1067
1274
|
// Check if table cells still have offsetWidth/Height when they are set
|
|
@@ -1081,7 +1288,7 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
1081
1288
|
jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
|
|
1082
1289
|
div.innerHTML = "";
|
|
1083
1290
|
|
|
1084
|
-
|
|
1291
|
+
body.removeChild( div ).style.display = "none";
|
|
1085
1292
|
div = tds = null;
|
|
1086
1293
|
});
|
|
1087
1294
|
|
|
@@ -1091,6 +1298,14 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
1091
1298
|
var el = document.createElement("div");
|
|
1092
1299
|
eventName = "on" + eventName;
|
|
1093
1300
|
|
|
1301
|
+
// We only care about the case where non-standard event systems
|
|
1302
|
+
// are used, namely in IE. Short-circuiting here helps us to
|
|
1303
|
+
// avoid an eval call (in setAttribute) which can cause CSP
|
|
1304
|
+
// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
|
|
1305
|
+
if ( !el.attachEvent ) {
|
|
1306
|
+
return true;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1094
1309
|
var isSupported = (eventName in el);
|
|
1095
1310
|
if ( !isSupported ) {
|
|
1096
1311
|
el.setAttribute(eventName, "return;");
|
|
@@ -1105,15 +1320,14 @@ return (window.jQuery = window.$ = jQuery);
|
|
|
1105
1320
|
jQuery.support.changeBubbles = eventSupported("change");
|
|
1106
1321
|
|
|
1107
1322
|
// release memory in IE
|
|
1108
|
-
|
|
1323
|
+
div = all = a = null;
|
|
1109
1324
|
})();
|
|
1110
1325
|
})( jQuery );
|
|
1111
1326
|
|
|
1112
1327
|
|
|
1113
1328
|
(function( jQuery ) {
|
|
1114
1329
|
|
|
1115
|
-
var
|
|
1116
|
-
rbrace = /^(?:\{.*\}|\[.*\])$/;
|
|
1330
|
+
var rbrace = /^(?:\{.*\}|\[.*\])$/;
|
|
1117
1331
|
|
|
1118
1332
|
jQuery.extend({
|
|
1119
1333
|
cache: {},
|
|
@@ -1121,8 +1335,9 @@ jQuery.extend({
|
|
|
1121
1335
|
// Please use with caution
|
|
1122
1336
|
uuid: 0,
|
|
1123
1337
|
|
|
1124
|
-
// Unique for each copy of jQuery on the page
|
|
1125
|
-
|
|
1338
|
+
// Unique for each copy of jQuery on the page
|
|
1339
|
+
// Non-digits removed to match rinlinejQuery
|
|
1340
|
+
expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
|
|
1126
1341
|
|
|
1127
1342
|
// The following elements throw uncatchable exceptions if you
|
|
1128
1343
|
// attempt to add expando properties to them.
|
|
@@ -1133,103 +1348,171 @@ jQuery.extend({
|
|
|
1133
1348
|
"applet": true
|
|
1134
1349
|
},
|
|
1135
1350
|
|
|
1136
|
-
|
|
1351
|
+
hasData: function( elem ) {
|
|
1352
|
+
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
|
|
1353
|
+
|
|
1354
|
+
return !!elem && !jQuery.isEmptyObject(elem);
|
|
1355
|
+
},
|
|
1356
|
+
|
|
1357
|
+
data: function( elem, name, data, pvt /* Internal Use Only */ ) {
|
|
1137
1358
|
if ( !jQuery.acceptData( elem ) ) {
|
|
1138
1359
|
return;
|
|
1139
1360
|
}
|
|
1140
1361
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1362
|
+
var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
|
|
1363
|
+
|
|
1364
|
+
// We have to handle DOM nodes and JS objects differently because IE6-7
|
|
1365
|
+
// can't GC object references properly across the DOM-JS boundary
|
|
1366
|
+
isNode = elem.nodeType,
|
|
1144
1367
|
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
cache = jQuery.cache,
|
|
1368
|
+
// Only DOM nodes need the global jQuery cache; JS object data is
|
|
1369
|
+
// attached directly to the object so GC can occur automatically
|
|
1370
|
+
cache = isNode ? jQuery.cache : elem,
|
|
1148
1371
|
|
|
1149
|
-
|
|
1372
|
+
// Only defining an ID for JS objects if its cache already exists allows
|
|
1373
|
+
// the code to shortcut on the same path as a DOM node with no cache
|
|
1374
|
+
id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
|
|
1375
|
+
|
|
1376
|
+
// Avoid doing any more work than we need to when trying to get data on an
|
|
1377
|
+
// object that has no data at all
|
|
1378
|
+
if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
|
|
1150
1379
|
return;
|
|
1151
1380
|
}
|
|
1152
1381
|
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1382
|
+
if ( !id ) {
|
|
1383
|
+
// Only DOM nodes need a new unique ID for each element since their data
|
|
1384
|
+
// ends up in the global cache
|
|
1385
|
+
if ( isNode ) {
|
|
1386
|
+
elem[ jQuery.expando ] = id = ++jQuery.uuid;
|
|
1387
|
+
} else {
|
|
1388
|
+
id = jQuery.expando;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1156
1391
|
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
elem[ jQuery.expando ] = id = ++jQuery.uuid;
|
|
1392
|
+
if ( !cache[ id ] ) {
|
|
1393
|
+
cache[ id ] = {};
|
|
1160
1394
|
}
|
|
1161
1395
|
|
|
1162
|
-
//
|
|
1163
|
-
//
|
|
1396
|
+
// An object can be passed to jQuery.data instead of a key/value pair; this gets
|
|
1397
|
+
// shallow copied over onto the existing cache
|
|
1164
1398
|
if ( typeof name === "object" ) {
|
|
1165
|
-
if (
|
|
1399
|
+
if ( pvt ) {
|
|
1400
|
+
cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
|
|
1401
|
+
} else {
|
|
1166
1402
|
cache[ id ] = jQuery.extend(cache[ id ], name);
|
|
1403
|
+
}
|
|
1404
|
+
}
|
|
1167
1405
|
|
|
1168
|
-
|
|
1169
|
-
|
|
1406
|
+
thisCache = cache[ id ];
|
|
1407
|
+
|
|
1408
|
+
// Internal jQuery data is stored in a separate object inside the object's data
|
|
1409
|
+
// cache in order to avoid key collisions between internal data and user-defined
|
|
1410
|
+
// data
|
|
1411
|
+
if ( pvt ) {
|
|
1412
|
+
if ( !thisCache[ internalKey ] ) {
|
|
1413
|
+
thisCache[ internalKey ] = {};
|
|
1170
1414
|
}
|
|
1171
1415
|
|
|
1172
|
-
|
|
1173
|
-
cache[ id ] = {};
|
|
1416
|
+
thisCache = thisCache[ internalKey ];
|
|
1174
1417
|
}
|
|
1175
1418
|
|
|
1176
|
-
thisCache = isNode ? cache[ id ] : cache;
|
|
1177
|
-
|
|
1178
|
-
// Prevent overriding the named cache with undefined values
|
|
1179
1419
|
if ( data !== undefined ) {
|
|
1180
1420
|
thisCache[ name ] = data;
|
|
1181
1421
|
}
|
|
1182
1422
|
|
|
1183
|
-
|
|
1423
|
+
// TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
|
|
1424
|
+
// not attempt to inspect the internal events object using jQuery.data, as this
|
|
1425
|
+
// internal data object is undocumented and subject to change.
|
|
1426
|
+
if ( name === "events" && !thisCache[name] ) {
|
|
1427
|
+
return thisCache[ internalKey ] && thisCache[ internalKey ].events;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
return getByName ? thisCache[ name ] : thisCache;
|
|
1184
1431
|
},
|
|
1185
1432
|
|
|
1186
|
-
removeData: function( elem, name ) {
|
|
1433
|
+
removeData: function( elem, name, pvt /* Internal Use Only */ ) {
|
|
1187
1434
|
if ( !jQuery.acceptData( elem ) ) {
|
|
1188
1435
|
return;
|
|
1189
1436
|
}
|
|
1190
1437
|
|
|
1191
|
-
|
|
1192
|
-
windowData :
|
|
1193
|
-
elem;
|
|
1438
|
+
var internalKey = jQuery.expando, isNode = elem.nodeType,
|
|
1194
1439
|
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1440
|
+
// See jQuery.data for more information
|
|
1441
|
+
cache = isNode ? jQuery.cache : elem,
|
|
1442
|
+
|
|
1443
|
+
// See jQuery.data for more information
|
|
1444
|
+
id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
|
|
1445
|
+
|
|
1446
|
+
// If there is already no cache entry for this object, there is no
|
|
1447
|
+
// purpose in continuing
|
|
1448
|
+
if ( !cache[ id ] ) {
|
|
1449
|
+
return;
|
|
1450
|
+
}
|
|
1199
1451
|
|
|
1200
|
-
// If we want to remove a specific section of the element's data
|
|
1201
1452
|
if ( name ) {
|
|
1453
|
+
var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
|
|
1454
|
+
|
|
1202
1455
|
if ( thisCache ) {
|
|
1203
|
-
// Remove the section of cache data
|
|
1204
1456
|
delete thisCache[ name ];
|
|
1205
1457
|
|
|
1206
|
-
// If
|
|
1207
|
-
|
|
1208
|
-
|
|
1458
|
+
// If there is no data left in the cache, we want to continue
|
|
1459
|
+
// and let the cache object itself get destroyed
|
|
1460
|
+
if ( !jQuery.isEmptyObject(thisCache) ) {
|
|
1461
|
+
return;
|
|
1209
1462
|
}
|
|
1210
1463
|
}
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1466
|
+
// See jQuery.data for more information
|
|
1467
|
+
if ( pvt ) {
|
|
1468
|
+
delete cache[ id ][ internalKey ];
|
|
1469
|
+
|
|
1470
|
+
// Don't destroy the parent cache unless the internal data object
|
|
1471
|
+
// had been the only thing left in it
|
|
1472
|
+
if ( !jQuery.isEmptyObject(cache[ id ]) ) {
|
|
1473
|
+
return;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
var internalCache = cache[ id ][ internalKey ];
|
|
1211
1478
|
|
|
1212
|
-
//
|
|
1479
|
+
// Browsers that fail expando deletion also refuse to delete expandos on
|
|
1480
|
+
// the window, but it will allow it on all other JS objects; other browsers
|
|
1481
|
+
// don't care
|
|
1482
|
+
if ( jQuery.support.deleteExpando || cache != window ) {
|
|
1483
|
+
delete cache[ id ];
|
|
1213
1484
|
} else {
|
|
1214
|
-
|
|
1215
|
-
|
|
1485
|
+
cache[ id ] = null;
|
|
1486
|
+
}
|
|
1216
1487
|
|
|
1488
|
+
// We destroyed the entire user cache at once because it's faster than
|
|
1489
|
+
// iterating through each key, but we need to continue to persist internal
|
|
1490
|
+
// data if it existed
|
|
1491
|
+
if ( internalCache ) {
|
|
1492
|
+
cache[ id ] = {};
|
|
1493
|
+
cache[ id ][ internalKey ] = internalCache;
|
|
1494
|
+
|
|
1495
|
+
// Otherwise, we need to eliminate the expando on the node to avoid
|
|
1496
|
+
// false lookups in the cache for entries that no longer exist
|
|
1497
|
+
} else if ( isNode ) {
|
|
1498
|
+
// IE does not allow us to delete expando properties from nodes,
|
|
1499
|
+
// nor does it have a removeAttribute function on Document nodes;
|
|
1500
|
+
// we must handle all of these cases
|
|
1501
|
+
if ( jQuery.support.deleteExpando ) {
|
|
1502
|
+
delete elem[ jQuery.expando ];
|
|
1217
1503
|
} else if ( elem.removeAttribute ) {
|
|
1218
1504
|
elem.removeAttribute( jQuery.expando );
|
|
1219
|
-
|
|
1220
|
-
// Completely remove the data cache
|
|
1221
|
-
} else if ( isNode ) {
|
|
1222
|
-
delete cache[ id ];
|
|
1223
|
-
|
|
1224
|
-
// Remove all fields from the object
|
|
1225
1505
|
} else {
|
|
1226
|
-
|
|
1227
|
-
delete elem[ n ];
|
|
1228
|
-
}
|
|
1506
|
+
elem[ jQuery.expando ] = null;
|
|
1229
1507
|
}
|
|
1230
1508
|
}
|
|
1231
1509
|
},
|
|
1232
1510
|
|
|
1511
|
+
// For internal use only.
|
|
1512
|
+
_data: function( elem, name, data ) {
|
|
1513
|
+
return jQuery.data( elem, name, data, true );
|
|
1514
|
+
},
|
|
1515
|
+
|
|
1233
1516
|
// A method for determining if a DOM node can handle the data expando
|
|
1234
1517
|
acceptData: function( elem ) {
|
|
1235
1518
|
if ( elem.nodeName ) {
|
|
@@ -1250,15 +1533,17 @@ jQuery.fn.extend({
|
|
|
1250
1533
|
|
|
1251
1534
|
if ( typeof key === "undefined" ) {
|
|
1252
1535
|
if ( this.length ) {
|
|
1253
|
-
var attr = this[0].attributes, name;
|
|
1254
1536
|
data = jQuery.data( this[0] );
|
|
1255
1537
|
|
|
1256
|
-
|
|
1257
|
-
|
|
1538
|
+
if ( this[0].nodeType === 1 ) {
|
|
1539
|
+
var attr = this[0].attributes, name;
|
|
1540
|
+
for ( var i = 0, l = attr.length; i < l; i++ ) {
|
|
1541
|
+
name = attr[i].name;
|
|
1258
1542
|
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1543
|
+
if ( name.indexOf( "data-" ) === 0 ) {
|
|
1544
|
+
name = name.substr( 5 );
|
|
1545
|
+
dataAttr( this[0], name, data[ name ] );
|
|
1546
|
+
}
|
|
1262
1547
|
}
|
|
1263
1548
|
}
|
|
1264
1549
|
}
|
|
@@ -1345,7 +1630,7 @@ jQuery.extend({
|
|
|
1345
1630
|
}
|
|
1346
1631
|
|
|
1347
1632
|
type = (type || "fx") + "queue";
|
|
1348
|
-
var q = jQuery.
|
|
1633
|
+
var q = jQuery._data( elem, type );
|
|
1349
1634
|
|
|
1350
1635
|
// Speed up dequeue by getting out quickly if this is just a lookup
|
|
1351
1636
|
if ( !data ) {
|
|
@@ -1353,7 +1638,7 @@ jQuery.extend({
|
|
|
1353
1638
|
}
|
|
1354
1639
|
|
|
1355
1640
|
if ( !q || jQuery.isArray(data) ) {
|
|
1356
|
-
q = jQuery.
|
|
1641
|
+
q = jQuery._data( elem, type, jQuery.makeArray(data) );
|
|
1357
1642
|
|
|
1358
1643
|
} else {
|
|
1359
1644
|
q.push( data );
|
|
@@ -1384,6 +1669,10 @@ jQuery.extend({
|
|
|
1384
1669
|
jQuery.dequeue(elem, type);
|
|
1385
1670
|
});
|
|
1386
1671
|
}
|
|
1672
|
+
|
|
1673
|
+
if ( !queue.length ) {
|
|
1674
|
+
jQuery.removeData( elem, type + "queue", true );
|
|
1675
|
+
}
|
|
1387
1676
|
}
|
|
1388
1677
|
});
|
|
1389
1678
|
|
|
@@ -1435,7 +1724,7 @@ jQuery.fn.extend({
|
|
|
1435
1724
|
|
|
1436
1725
|
(function( jQuery ) {
|
|
1437
1726
|
|
|
1438
|
-
var rclass = /[\n\t]/g,
|
|
1727
|
+
var rclass = /[\n\t\r]/g,
|
|
1439
1728
|
rspaces = /\s+/,
|
|
1440
1729
|
rreturn = /\r/g,
|
|
1441
1730
|
rspecialurl = /^(?:href|src|style)$/,
|
|
@@ -1568,11 +1857,11 @@ jQuery.fn.extend({
|
|
|
1568
1857
|
} else if ( type === "undefined" || type === "boolean" ) {
|
|
1569
1858
|
if ( this.className ) {
|
|
1570
1859
|
// store className if set
|
|
1571
|
-
jQuery.
|
|
1860
|
+
jQuery._data( this, "__className__", this.className );
|
|
1572
1861
|
}
|
|
1573
1862
|
|
|
1574
1863
|
// toggle whole className
|
|
1575
|
-
this.className = this.className || value === false ? "" : jQuery.
|
|
1864
|
+
this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
|
|
1576
1865
|
}
|
|
1577
1866
|
});
|
|
1578
1867
|
},
|
|
@@ -1617,7 +1906,7 @@ jQuery.fn.extend({
|
|
|
1617
1906
|
var option = options[ i ];
|
|
1618
1907
|
|
|
1619
1908
|
// Don't return options that are disabled or in a disabled optgroup
|
|
1620
|
-
if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
|
|
1909
|
+
if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
|
|
1621
1910
|
(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
|
|
1622
1911
|
|
|
1623
1912
|
// Get the specific value for the option
|
|
@@ -1640,7 +1929,6 @@ jQuery.fn.extend({
|
|
|
1640
1929
|
if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
|
|
1641
1930
|
return elem.getAttribute("value") === null ? "on" : elem.value;
|
|
1642
1931
|
}
|
|
1643
|
-
|
|
1644
1932
|
|
|
1645
1933
|
// Everything else, we just grab the value
|
|
1646
1934
|
return (elem.value || "").replace(rreturn, "");
|
|
@@ -1706,10 +1994,10 @@ jQuery.extend({
|
|
|
1706
1994
|
height: true,
|
|
1707
1995
|
offset: true
|
|
1708
1996
|
},
|
|
1709
|
-
|
|
1997
|
+
|
|
1710
1998
|
attr: function( elem, name, value, pass ) {
|
|
1711
|
-
// don't set attributes on text and
|
|
1712
|
-
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
|
|
1999
|
+
// don't get/set attributes on text, comment and attribute nodes
|
|
2000
|
+
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {
|
|
1713
2001
|
return undefined;
|
|
1714
2002
|
}
|
|
1715
2003
|
|
|
@@ -1724,88 +2012,96 @@ jQuery.extend({
|
|
|
1724
2012
|
// Try to normalize/fix the name
|
|
1725
2013
|
name = notxml && jQuery.props[ name ] || name;
|
|
1726
2014
|
|
|
1727
|
-
//
|
|
1728
|
-
|
|
2015
|
+
// Only do all the following if this is a node (faster for style)
|
|
2016
|
+
if ( elem.nodeType === 1 ) {
|
|
2017
|
+
// These attributes require special treatment
|
|
2018
|
+
var special = rspecialurl.test( name );
|
|
2019
|
+
|
|
2020
|
+
// Safari mis-reports the default selected property of an option
|
|
2021
|
+
// Accessing the parent's selectedIndex property fixes it
|
|
2022
|
+
if ( name === "selected" && !jQuery.support.optSelected ) {
|
|
2023
|
+
var parent = elem.parentNode;
|
|
2024
|
+
if ( parent ) {
|
|
2025
|
+
parent.selectedIndex;
|
|
2026
|
+
|
|
2027
|
+
// Make sure that it also works with optgroups, see #5701
|
|
2028
|
+
if ( parent.parentNode ) {
|
|
2029
|
+
parent.parentNode.selectedIndex;
|
|
2030
|
+
}
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
2033
|
+
|
|
2034
|
+
// If applicable, access the attribute via the DOM 0 way
|
|
2035
|
+
// 'in' checks fail in Blackberry 4.7 #6931
|
|
2036
|
+
if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
|
|
2037
|
+
if ( set ) {
|
|
2038
|
+
// We can't allow the type property to be changed (since it causes problems in IE)
|
|
2039
|
+
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
|
|
2040
|
+
jQuery.error( "type property can't be changed" );
|
|
2041
|
+
}
|
|
1729
2042
|
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
if ( parent ) {
|
|
1735
|
-
parent.selectedIndex;
|
|
2043
|
+
if ( value === null ) {
|
|
2044
|
+
if ( elem.nodeType === 1 ) {
|
|
2045
|
+
elem.removeAttribute( name );
|
|
2046
|
+
}
|
|
1736
2047
|
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
2048
|
+
} else {
|
|
2049
|
+
elem[ name ] = value;
|
|
2050
|
+
}
|
|
1740
2051
|
}
|
|
1741
|
-
}
|
|
1742
|
-
}
|
|
1743
2052
|
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
if ( set ) {
|
|
1748
|
-
// We can't allow the type property to be changed (since it causes problems in IE)
|
|
1749
|
-
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
|
|
1750
|
-
jQuery.error( "type property can't be changed" );
|
|
2053
|
+
// browsers index elements by id/name on forms, give priority to attributes.
|
|
2054
|
+
if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
|
|
2055
|
+
return elem.getAttributeNode( name ).nodeValue;
|
|
1751
2056
|
}
|
|
1752
2057
|
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
2058
|
+
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
|
2059
|
+
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
|
2060
|
+
if ( name === "tabIndex" ) {
|
|
2061
|
+
var attributeNode = elem.getAttributeNode( "tabIndex" );
|
|
1757
2062
|
|
|
1758
|
-
|
|
1759
|
-
|
|
2063
|
+
return attributeNode && attributeNode.specified ?
|
|
2064
|
+
attributeNode.value :
|
|
2065
|
+
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
|
2066
|
+
0 :
|
|
2067
|
+
undefined;
|
|
1760
2068
|
}
|
|
1761
|
-
}
|
|
1762
2069
|
|
|
1763
|
-
|
|
1764
|
-
if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
|
|
1765
|
-
return elem.getAttributeNode( name ).nodeValue;
|
|
2070
|
+
return elem[ name ];
|
|
1766
2071
|
}
|
|
1767
2072
|
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
2073
|
+
if ( !jQuery.support.style && notxml && name === "style" ) {
|
|
2074
|
+
if ( set ) {
|
|
2075
|
+
elem.style.cssText = "" + value;
|
|
2076
|
+
}
|
|
1772
2077
|
|
|
1773
|
-
return
|
|
1774
|
-
attributeNode.value :
|
|
1775
|
-
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
|
1776
|
-
0 :
|
|
1777
|
-
undefined;
|
|
2078
|
+
return elem.style.cssText;
|
|
1778
2079
|
}
|
|
1779
2080
|
|
|
1780
|
-
return elem[ name ];
|
|
1781
|
-
}
|
|
1782
|
-
|
|
1783
|
-
if ( !jQuery.support.style && notxml && name === "style" ) {
|
|
1784
2081
|
if ( set ) {
|
|
1785
|
-
|
|
2082
|
+
// convert the value to a string (all browsers do this but IE) see #1070
|
|
2083
|
+
elem.setAttribute( name, "" + value );
|
|
1786
2084
|
}
|
|
1787
2085
|
|
|
1788
|
-
return
|
|
1789
|
-
|
|
2086
|
+
// Ensure that missing attributes return undefined
|
|
2087
|
+
// Blackberry 4.7 returns "" from getAttribute #6938
|
|
2088
|
+
if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
|
|
2089
|
+
return undefined;
|
|
2090
|
+
}
|
|
1790
2091
|
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
2092
|
+
var attr = !jQuery.support.hrefNormalized && notxml && special ?
|
|
2093
|
+
// Some attributes require a special call on IE
|
|
2094
|
+
elem.getAttribute( name, 2 ) :
|
|
2095
|
+
elem.getAttribute( name );
|
|
1795
2096
|
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
|
|
1799
|
-
return undefined;
|
|
2097
|
+
// Non-existent attributes return null, we normalize to undefined
|
|
2098
|
+
return attr === null ? undefined : attr;
|
|
1800
2099
|
}
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
// Non-existent attributes return null, we normalize to undefined
|
|
1808
|
-
return attr === null ? undefined : attr;
|
|
2100
|
+
// Handle everything which isn't a DOM element node
|
|
2101
|
+
if ( set ) {
|
|
2102
|
+
elem[ name ] = value;
|
|
2103
|
+
}
|
|
2104
|
+
return elem[ name ];
|
|
1809
2105
|
}
|
|
1810
2106
|
});
|
|
1811
2107
|
|
|
@@ -1822,7 +2118,7 @@ var rnamespaces = /\.(.*)$/,
|
|
|
1822
2118
|
fcleanup = function( nm ) {
|
|
1823
2119
|
return nm.replace(rescape, "\\$&");
|
|
1824
2120
|
},
|
|
1825
|
-
|
|
2121
|
+
eventKey = "events";
|
|
1826
2122
|
|
|
1827
2123
|
/*
|
|
1828
2124
|
* A number of helper functions used for managing events.
|
|
@@ -1864,7 +2160,7 @@ jQuery.event = {
|
|
|
1864
2160
|
}
|
|
1865
2161
|
|
|
1866
2162
|
// Init the element's event structure
|
|
1867
|
-
var elemData = jQuery.
|
|
2163
|
+
var elemData = jQuery._data( elem );
|
|
1868
2164
|
|
|
1869
2165
|
// If no elemData is found then we must be trying to bind to one of the
|
|
1870
2166
|
// banned noData elements
|
|
@@ -1872,12 +2168,9 @@ jQuery.event = {
|
|
|
1872
2168
|
return;
|
|
1873
2169
|
}
|
|
1874
2170
|
|
|
1875
|
-
|
|
1876
|
-
// Fixes bug #7150.
|
|
1877
|
-
var eventKey = elem.nodeType ? "events" : "__events__",
|
|
1878
|
-
events = elemData[ eventKey ],
|
|
2171
|
+
var events = elemData[ eventKey ],
|
|
1879
2172
|
eventHandle = elemData.handle;
|
|
1880
|
-
|
|
2173
|
+
|
|
1881
2174
|
if ( typeof events === "function" ) {
|
|
1882
2175
|
// On plain objects events is a fn that holds the the data
|
|
1883
2176
|
// which prevents this data from being JSON serialized
|
|
@@ -1957,9 +2250,9 @@ jQuery.event = {
|
|
|
1957
2250
|
}
|
|
1958
2251
|
}
|
|
1959
2252
|
}
|
|
1960
|
-
|
|
1961
|
-
if ( special.add ) {
|
|
1962
|
-
special.add.call( elem, handleObj );
|
|
2253
|
+
|
|
2254
|
+
if ( special.add ) {
|
|
2255
|
+
special.add.call( elem, handleObj );
|
|
1963
2256
|
|
|
1964
2257
|
if ( !handleObj.handler.guid ) {
|
|
1965
2258
|
handleObj.handler.guid = handler.guid;
|
|
@@ -1991,14 +2284,13 @@ jQuery.event = {
|
|
|
1991
2284
|
}
|
|
1992
2285
|
|
|
1993
2286
|
var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
|
|
1994
|
-
|
|
1995
|
-
elemData = jQuery.data( elem ),
|
|
2287
|
+
elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
|
|
1996
2288
|
events = elemData && elemData[ eventKey ];
|
|
1997
2289
|
|
|
1998
2290
|
if ( !elemData || !events ) {
|
|
1999
2291
|
return;
|
|
2000
2292
|
}
|
|
2001
|
-
|
|
2293
|
+
|
|
2002
2294
|
if ( typeof events === "function" ) {
|
|
2003
2295
|
elemData = events;
|
|
2004
2296
|
events = events.events;
|
|
@@ -2036,7 +2328,7 @@ jQuery.event = {
|
|
|
2036
2328
|
namespaces = type.split(".");
|
|
2037
2329
|
type = namespaces.shift();
|
|
2038
2330
|
|
|
2039
|
-
namespace = new RegExp("(^|\\.)" +
|
|
2331
|
+
namespace = new RegExp("(^|\\.)" +
|
|
2040
2332
|
jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
|
|
2041
2333
|
}
|
|
2042
2334
|
|
|
@@ -2104,10 +2396,10 @@ jQuery.event = {
|
|
|
2104
2396
|
delete elemData.handle;
|
|
2105
2397
|
|
|
2106
2398
|
if ( typeof elemData === "function" ) {
|
|
2107
|
-
jQuery.removeData( elem, eventKey );
|
|
2399
|
+
jQuery.removeData( elem, eventKey, true );
|
|
2108
2400
|
|
|
2109
2401
|
} else if ( jQuery.isEmptyObject( elemData ) ) {
|
|
2110
|
-
jQuery.removeData( elem );
|
|
2402
|
+
jQuery.removeData( elem, undefined, true );
|
|
2111
2403
|
}
|
|
2112
2404
|
}
|
|
2113
2405
|
},
|
|
@@ -2139,9 +2431,16 @@ jQuery.event = {
|
|
|
2139
2431
|
|
|
2140
2432
|
// Only trigger if we've ever bound an event for it
|
|
2141
2433
|
if ( jQuery.event.global[ type ] ) {
|
|
2434
|
+
// XXX This code smells terrible. event.js should not be directly
|
|
2435
|
+
// inspecting the data cache
|
|
2142
2436
|
jQuery.each( jQuery.cache, function() {
|
|
2143
|
-
|
|
2144
|
-
|
|
2437
|
+
// internalKey variable is just used to make it easier to find
|
|
2438
|
+
// and potentially change this stuff later; currently it just
|
|
2439
|
+
// points to jQuery.expando
|
|
2440
|
+
var internalKey = jQuery.expando,
|
|
2441
|
+
internalCache = this[ internalKey ];
|
|
2442
|
+
if ( internalCache && internalCache.events && internalCache.events[type] ) {
|
|
2443
|
+
jQuery.event.trigger( event, data, internalCache.handle.elem );
|
|
2145
2444
|
}
|
|
2146
2445
|
});
|
|
2147
2446
|
}
|
|
@@ -2167,8 +2466,8 @@ jQuery.event = {
|
|
|
2167
2466
|
|
|
2168
2467
|
// Trigger the event, it is assumed that "handle" is a function
|
|
2169
2468
|
var handle = elem.nodeType ?
|
|
2170
|
-
jQuery.
|
|
2171
|
-
(jQuery.
|
|
2469
|
+
jQuery._data( elem, "handle" ) :
|
|
2470
|
+
(jQuery._data( elem, eventKey ) || {}).handle;
|
|
2172
2471
|
|
|
2173
2472
|
if ( handle ) {
|
|
2174
2473
|
handle.apply( elem, data );
|
|
@@ -2198,7 +2497,7 @@ jQuery.event = {
|
|
|
2198
2497
|
isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
|
|
2199
2498
|
special = jQuery.event.special[ targetType ] || {};
|
|
2200
2499
|
|
|
2201
|
-
if ( (!special._default || special._default.call( elem, event ) === false) &&
|
|
2500
|
+
if ( (!special._default || special._default.call( elem, event ) === false) &&
|
|
2202
2501
|
!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
|
|
2203
2502
|
|
|
2204
2503
|
try {
|
|
@@ -2246,7 +2545,7 @@ jQuery.event = {
|
|
|
2246
2545
|
|
|
2247
2546
|
event.namespace = event.namespace || namespace_sort.join(".");
|
|
2248
2547
|
|
|
2249
|
-
events = jQuery.
|
|
2548
|
+
events = jQuery._data(this, eventKey);
|
|
2250
2549
|
|
|
2251
2550
|
if ( typeof events === "function" ) {
|
|
2252
2551
|
events = events.events;
|
|
@@ -2268,7 +2567,7 @@ jQuery.event = {
|
|
|
2268
2567
|
event.handler = handleObj.handler;
|
|
2269
2568
|
event.data = handleObj.data;
|
|
2270
2569
|
event.handleObj = handleObj;
|
|
2271
|
-
|
|
2570
|
+
|
|
2272
2571
|
var ret = handleObj.handler.apply( this, args );
|
|
2273
2572
|
|
|
2274
2573
|
if ( ret !== undefined ) {
|
|
@@ -2367,7 +2666,7 @@ jQuery.event = {
|
|
|
2367
2666
|
add: function( handleObj ) {
|
|
2368
2667
|
jQuery.event.add( this,
|
|
2369
2668
|
liveConvert( handleObj.origType, handleObj.selector ),
|
|
2370
|
-
jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
|
|
2669
|
+
jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
|
|
2371
2670
|
},
|
|
2372
2671
|
|
|
2373
2672
|
remove: function( handleObj ) {
|
|
@@ -2397,7 +2696,7 @@ jQuery.removeEvent = document.removeEventListener ?
|
|
|
2397
2696
|
if ( elem.removeEventListener ) {
|
|
2398
2697
|
elem.removeEventListener( type, handle, false );
|
|
2399
2698
|
}
|
|
2400
|
-
} :
|
|
2699
|
+
} :
|
|
2401
2700
|
function( elem, type, handle ) {
|
|
2402
2701
|
if ( elem.detachEvent ) {
|
|
2403
2702
|
elem.detachEvent( "on" + type, handle );
|
|
@@ -2414,6 +2713,12 @@ jQuery.Event = function( src ) {
|
|
|
2414
2713
|
if ( src && src.type ) {
|
|
2415
2714
|
this.originalEvent = src;
|
|
2416
2715
|
this.type = src.type;
|
|
2716
|
+
|
|
2717
|
+
// Events bubbling up the document may have been marked as prevented
|
|
2718
|
+
// by a handler lower down the tree; reflect the correct value.
|
|
2719
|
+
this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
|
|
2720
|
+
src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
|
|
2721
|
+
|
|
2417
2722
|
// Event type
|
|
2418
2723
|
} else {
|
|
2419
2724
|
this.type = src;
|
|
@@ -2444,7 +2749,7 @@ jQuery.Event.prototype = {
|
|
|
2444
2749
|
if ( !e ) {
|
|
2445
2750
|
return;
|
|
2446
2751
|
}
|
|
2447
|
-
|
|
2752
|
+
|
|
2448
2753
|
// if preventDefault exists run it on the original event
|
|
2449
2754
|
if ( e.preventDefault ) {
|
|
2450
2755
|
e.preventDefault();
|
|
@@ -2530,7 +2835,7 @@ if ( !jQuery.support.submitBubbles ) {
|
|
|
2530
2835
|
|
|
2531
2836
|
jQuery.event.special.submit = {
|
|
2532
2837
|
setup: function( data, namespaces ) {
|
|
2533
|
-
if ( this.nodeName.toLowerCase() !== "form" ) {
|
|
2838
|
+
if ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) {
|
|
2534
2839
|
jQuery.event.add(this, "click.specialSubmit", function( e ) {
|
|
2535
2840
|
var elem = e.target,
|
|
2536
2841
|
type = elem.type;
|
|
@@ -2540,7 +2845,7 @@ if ( !jQuery.support.submitBubbles ) {
|
|
|
2540
2845
|
return trigger( "submit", this, arguments );
|
|
2541
2846
|
}
|
|
2542
2847
|
});
|
|
2543
|
-
|
|
2848
|
+
|
|
2544
2849
|
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
|
|
2545
2850
|
var elem = e.target,
|
|
2546
2851
|
type = elem.type;
|
|
@@ -2595,14 +2900,14 @@ if ( !jQuery.support.changeBubbles ) {
|
|
|
2595
2900
|
return;
|
|
2596
2901
|
}
|
|
2597
2902
|
|
|
2598
|
-
data = jQuery.
|
|
2903
|
+
data = jQuery._data( elem, "_change_data" );
|
|
2599
2904
|
val = getVal(elem);
|
|
2600
2905
|
|
|
2601
2906
|
// the current data will be also retrieved by beforeactivate
|
|
2602
2907
|
if ( e.type !== "focusout" || elem.type !== "radio" ) {
|
|
2603
|
-
jQuery.
|
|
2908
|
+
jQuery._data( elem, "_change_data", val );
|
|
2604
2909
|
}
|
|
2605
|
-
|
|
2910
|
+
|
|
2606
2911
|
if ( data === undefined || val === data ) {
|
|
2607
2912
|
return;
|
|
2608
2913
|
}
|
|
@@ -2616,7 +2921,7 @@ if ( !jQuery.support.changeBubbles ) {
|
|
|
2616
2921
|
|
|
2617
2922
|
jQuery.event.special.change = {
|
|
2618
2923
|
filters: {
|
|
2619
|
-
focusout: testChange,
|
|
2924
|
+
focusout: testChange,
|
|
2620
2925
|
|
|
2621
2926
|
beforedeactivate: testChange,
|
|
2622
2927
|
|
|
@@ -2645,7 +2950,7 @@ if ( !jQuery.support.changeBubbles ) {
|
|
|
2645
2950
|
// information
|
|
2646
2951
|
beforeactivate: function( e ) {
|
|
2647
2952
|
var elem = e.target;
|
|
2648
|
-
jQuery.
|
|
2953
|
+
jQuery._data( elem, "_change_data", getVal(elem) );
|
|
2649
2954
|
}
|
|
2650
2955
|
},
|
|
2651
2956
|
|
|
@@ -2684,21 +2989,17 @@ if ( document.addEventListener ) {
|
|
|
2684
2989
|
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
|
2685
2990
|
jQuery.event.special[ fix ] = {
|
|
2686
2991
|
setup: function() {
|
|
2687
|
-
|
|
2688
|
-
document.addEventListener( orig, handler, true );
|
|
2689
|
-
}
|
|
2992
|
+
this.addEventListener( orig, handler, true );
|
|
2690
2993
|
},
|
|
2691
2994
|
teardown: function() {
|
|
2692
|
-
|
|
2693
|
-
document.removeEventListener( orig, handler, true );
|
|
2694
|
-
}
|
|
2995
|
+
this.removeEventListener( orig, handler, true );
|
|
2695
2996
|
}
|
|
2696
2997
|
};
|
|
2697
2998
|
|
|
2698
|
-
function handler( e ) {
|
|
2999
|
+
function handler( e ) {
|
|
2699
3000
|
e = jQuery.event.fix( e );
|
|
2700
3001
|
e.type = fix;
|
|
2701
|
-
return jQuery.event.
|
|
3002
|
+
return jQuery.event.handle.call( this, e );
|
|
2702
3003
|
}
|
|
2703
3004
|
});
|
|
2704
3005
|
}
|
|
@@ -2712,7 +3013,7 @@ jQuery.each(["bind", "one"], function( i, name ) {
|
|
|
2712
3013
|
}
|
|
2713
3014
|
return this;
|
|
2714
3015
|
}
|
|
2715
|
-
|
|
3016
|
+
|
|
2716
3017
|
if ( jQuery.isFunction( data ) || data === false ) {
|
|
2717
3018
|
fn = data;
|
|
2718
3019
|
data = undefined;
|
|
@@ -2752,20 +3053,20 @@ jQuery.fn.extend({
|
|
|
2752
3053
|
|
|
2753
3054
|
return this;
|
|
2754
3055
|
},
|
|
2755
|
-
|
|
3056
|
+
|
|
2756
3057
|
delegate: function( selector, types, data, fn ) {
|
|
2757
3058
|
return this.live( types, data, fn, selector );
|
|
2758
3059
|
},
|
|
2759
|
-
|
|
3060
|
+
|
|
2760
3061
|
undelegate: function( selector, types, fn ) {
|
|
2761
3062
|
if ( arguments.length === 0 ) {
|
|
2762
3063
|
return this.unbind( "live" );
|
|
2763
|
-
|
|
3064
|
+
|
|
2764
3065
|
} else {
|
|
2765
3066
|
return this.die( types, null, fn, selector );
|
|
2766
3067
|
}
|
|
2767
3068
|
},
|
|
2768
|
-
|
|
3069
|
+
|
|
2769
3070
|
trigger: function( type, data ) {
|
|
2770
3071
|
return this.each(function() {
|
|
2771
3072
|
jQuery.event.trigger( type, data, this );
|
|
@@ -2794,8 +3095,8 @@ jQuery.fn.extend({
|
|
|
2794
3095
|
|
|
2795
3096
|
return this.click( jQuery.proxy( fn, function( event ) {
|
|
2796
3097
|
// Figure out which function to execute
|
|
2797
|
-
var lastToggle = ( jQuery.
|
|
2798
|
-
jQuery.
|
|
3098
|
+
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
|
|
3099
|
+
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
|
|
2799
3100
|
|
|
2800
3101
|
// Make sure that clicks stop
|
|
2801
3102
|
event.preventDefault();
|
|
@@ -2822,12 +3123,12 @@ jQuery.each(["live", "die"], function( i, name ) {
|
|
|
2822
3123
|
var type, i = 0, match, namespaces, preType,
|
|
2823
3124
|
selector = origSelector || this.selector,
|
|
2824
3125
|
context = origSelector ? this : jQuery( this.context );
|
|
2825
|
-
|
|
3126
|
+
|
|
2826
3127
|
if ( typeof types === "object" && !types.preventDefault ) {
|
|
2827
3128
|
for ( var key in types ) {
|
|
2828
3129
|
context[ name ]( key, data, types[key], selector );
|
|
2829
3130
|
}
|
|
2830
|
-
|
|
3131
|
+
|
|
2831
3132
|
return this;
|
|
2832
3133
|
}
|
|
2833
3134
|
|
|
@@ -2874,7 +3175,7 @@ jQuery.each(["live", "die"], function( i, name ) {
|
|
|
2874
3175
|
context.unbind( "live." + liveConvert( type, selector ), fn );
|
|
2875
3176
|
}
|
|
2876
3177
|
}
|
|
2877
|
-
|
|
3178
|
+
|
|
2878
3179
|
return this;
|
|
2879
3180
|
};
|
|
2880
3181
|
});
|
|
@@ -2883,17 +3184,17 @@ function liveHandler( event ) {
|
|
|
2883
3184
|
var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
|
|
2884
3185
|
elems = [],
|
|
2885
3186
|
selectors = [],
|
|
2886
|
-
events = jQuery.
|
|
3187
|
+
events = jQuery._data( this, eventKey );
|
|
2887
3188
|
|
|
2888
3189
|
if ( typeof events === "function" ) {
|
|
2889
3190
|
events = events.events;
|
|
2890
3191
|
}
|
|
2891
3192
|
|
|
2892
|
-
// Make sure we avoid non-left-click bubbling in Firefox (#3861)
|
|
2893
|
-
if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
|
|
3193
|
+
// Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
|
|
3194
|
+
if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
|
|
2894
3195
|
return;
|
|
2895
3196
|
}
|
|
2896
|
-
|
|
3197
|
+
|
|
2897
3198
|
if ( event.namespace ) {
|
|
2898
3199
|
namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
|
|
2899
3200
|
}
|
|
@@ -2991,29 +3292,12 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
|
|
|
2991
3292
|
}
|
|
2992
3293
|
});
|
|
2993
3294
|
|
|
2994
|
-
// Prevent memory leaks in IE
|
|
2995
|
-
// Window isn't included so as not to unbind existing unload events
|
|
2996
|
-
// More info:
|
|
2997
|
-
// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
|
|
2998
|
-
if ( window.attachEvent && !window.addEventListener ) {
|
|
2999
|
-
jQuery(window).bind("unload", function() {
|
|
3000
|
-
for ( var id in jQuery.cache ) {
|
|
3001
|
-
if ( jQuery.cache[ id ].handle ) {
|
|
3002
|
-
// Try/Catch is to handle iframes being unloaded, see #4280
|
|
3003
|
-
try {
|
|
3004
|
-
jQuery.event.remove( jQuery.cache[ id ].handle.elem );
|
|
3005
|
-
} catch(e) {}
|
|
3006
|
-
}
|
|
3007
|
-
}
|
|
3008
|
-
});
|
|
3009
|
-
}
|
|
3010
|
-
|
|
3011
3295
|
})( jQuery );
|
|
3012
3296
|
|
|
3013
3297
|
|
|
3014
3298
|
/*!
|
|
3015
|
-
* Sizzle CSS Selector Engine
|
|
3016
|
-
* Copyright
|
|
3299
|
+
* Sizzle CSS Selector Engine
|
|
3300
|
+
* Copyright 2011, The Dojo Foundation
|
|
3017
3301
|
* Released under the MIT, BSD, and GPL Licenses.
|
|
3018
3302
|
* More information: http://sizzlejs.com/
|
|
3019
3303
|
*/
|
|
@@ -3234,7 +3518,9 @@ Sizzle.find = function( expr, context, isXML ) {
|
|
|
3234
3518
|
}
|
|
3235
3519
|
|
|
3236
3520
|
if ( !set ) {
|
|
3237
|
-
set = context.getElementsByTagName
|
|
3521
|
+
set = typeof context.getElementsByTagName !== "undefined" ?
|
|
3522
|
+
context.getElementsByTagName( "*" ) :
|
|
3523
|
+
[];
|
|
3238
3524
|
}
|
|
3239
3525
|
|
|
3240
3526
|
return { set: set, expr: expr };
|
|
@@ -3342,9 +3628,9 @@ var Expr = Sizzle.selectors = {
|
|
|
3342
3628
|
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
|
3343
3629
|
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
|
3344
3630
|
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
|
|
3345
|
-
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]
|
|
3631
|
+
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
|
|
3346
3632
|
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
|
|
3347
|
-
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[
|
|
3633
|
+
CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
|
|
3348
3634
|
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
|
|
3349
3635
|
PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
|
|
3350
3636
|
},
|
|
@@ -3477,7 +3763,9 @@ var Expr = Sizzle.selectors = {
|
|
|
3477
3763
|
},
|
|
3478
3764
|
|
|
3479
3765
|
TAG: function( match, context ) {
|
|
3480
|
-
|
|
3766
|
+
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
|
3767
|
+
return context.getElementsByTagName( match[1] );
|
|
3768
|
+
}
|
|
3481
3769
|
}
|
|
3482
3770
|
},
|
|
3483
3771
|
preFilter: {
|
|
@@ -3490,7 +3778,7 @@ var Expr = Sizzle.selectors = {
|
|
|
3490
3778
|
|
|
3491
3779
|
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
|
|
3492
3780
|
if ( elem ) {
|
|
3493
|
-
if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
|
|
3781
|
+
if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
|
|
3494
3782
|
if ( !inplace ) {
|
|
3495
3783
|
result.push( elem );
|
|
3496
3784
|
}
|
|
@@ -3514,8 +3802,14 @@ var Expr = Sizzle.selectors = {
|
|
|
3514
3802
|
|
|
3515
3803
|
CHILD: function( match ) {
|
|
3516
3804
|
if ( match[1] === "nth" ) {
|
|
3805
|
+
if ( !match[2] ) {
|
|
3806
|
+
Sizzle.error( match[0] );
|
|
3807
|
+
}
|
|
3808
|
+
|
|
3809
|
+
match[2] = match[2].replace(/^\+|\s*/g, '');
|
|
3810
|
+
|
|
3517
3811
|
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
|
|
3518
|
-
var test = /(-?)(\d*)n(
|
|
3812
|
+
var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
|
|
3519
3813
|
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
|
|
3520
3814
|
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
|
|
3521
3815
|
|
|
@@ -3523,6 +3817,9 @@ var Expr = Sizzle.selectors = {
|
|
|
3523
3817
|
match[2] = (test[1] + (test[2] || 1)) - 0;
|
|
3524
3818
|
match[3] = test[3] - 0;
|
|
3525
3819
|
}
|
|
3820
|
+
else if ( match[2] ) {
|
|
3821
|
+
Sizzle.error( match[0] );
|
|
3822
|
+
}
|
|
3526
3823
|
|
|
3527
3824
|
// TODO: Move to normal caching system
|
|
3528
3825
|
match[0] = done++;
|
|
@@ -3531,12 +3828,15 @@ var Expr = Sizzle.selectors = {
|
|
|
3531
3828
|
},
|
|
3532
3829
|
|
|
3533
3830
|
ATTR: function( match, curLoop, inplace, result, not, isXML ) {
|
|
3534
|
-
var name = match[1].replace(/\\/g, "");
|
|
3831
|
+
var name = match[1] = match[1].replace(/\\/g, "");
|
|
3535
3832
|
|
|
3536
3833
|
if ( !isXML && Expr.attrMap[name] ) {
|
|
3537
3834
|
match[1] = Expr.attrMap[name];
|
|
3538
3835
|
}
|
|
3539
3836
|
|
|
3837
|
+
// Handle if an un-quoted value was used
|
|
3838
|
+
match[4] = ( match[4] || match[5] || "" ).replace(/\\/g, "");
|
|
3839
|
+
|
|
3540
3840
|
if ( match[2] === "~=" ) {
|
|
3541
3841
|
match[4] = " " + match[4] + " ";
|
|
3542
3842
|
}
|
|
@@ -3705,7 +4005,7 @@ var Expr = Sizzle.selectors = {
|
|
|
3705
4005
|
return true;
|
|
3706
4006
|
|
|
3707
4007
|
} else {
|
|
3708
|
-
Sizzle.error(
|
|
4008
|
+
Sizzle.error( name );
|
|
3709
4009
|
}
|
|
3710
4010
|
},
|
|
3711
4011
|
|
|
@@ -4095,13 +4395,47 @@ if ( document.querySelectorAll ) {
|
|
|
4095
4395
|
Sizzle = function( query, context, extra, seed ) {
|
|
4096
4396
|
context = context || document;
|
|
4097
4397
|
|
|
4098
|
-
// Make sure that attribute selectors are quoted
|
|
4099
|
-
query = query.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
|
|
4100
|
-
|
|
4101
4398
|
// Only use querySelectorAll on non-XML documents
|
|
4102
4399
|
// (ID selectors don't work in non-HTML documents)
|
|
4103
4400
|
if ( !seed && !Sizzle.isXML(context) ) {
|
|
4401
|
+
// See if we find a selector to speed up
|
|
4402
|
+
var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
|
|
4403
|
+
|
|
4404
|
+
if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
|
|
4405
|
+
// Speed-up: Sizzle("TAG")
|
|
4406
|
+
if ( match[1] ) {
|
|
4407
|
+
return makeArray( context.getElementsByTagName( query ), extra );
|
|
4408
|
+
|
|
4409
|
+
// Speed-up: Sizzle(".CLASS")
|
|
4410
|
+
} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
|
|
4411
|
+
return makeArray( context.getElementsByClassName( match[2] ), extra );
|
|
4412
|
+
}
|
|
4413
|
+
}
|
|
4414
|
+
|
|
4104
4415
|
if ( context.nodeType === 9 ) {
|
|
4416
|
+
// Speed-up: Sizzle("body")
|
|
4417
|
+
// The body element only exists once, optimize finding it
|
|
4418
|
+
if ( query === "body" && context.body ) {
|
|
4419
|
+
return makeArray( [ context.body ], extra );
|
|
4420
|
+
|
|
4421
|
+
// Speed-up: Sizzle("#ID")
|
|
4422
|
+
} else if ( match && match[3] ) {
|
|
4423
|
+
var elem = context.getElementById( match[3] );
|
|
4424
|
+
|
|
4425
|
+
// Check parentNode to catch when Blackberry 4.6 returns
|
|
4426
|
+
// nodes that are no longer in the document #6963
|
|
4427
|
+
if ( elem && elem.parentNode ) {
|
|
4428
|
+
// Handle the case where IE and Opera return items
|
|
4429
|
+
// by name instead of ID
|
|
4430
|
+
if ( elem.id === match[3] ) {
|
|
4431
|
+
return makeArray( [ elem ], extra );
|
|
4432
|
+
}
|
|
4433
|
+
|
|
4434
|
+
} else {
|
|
4435
|
+
return makeArray( [], extra );
|
|
4436
|
+
}
|
|
4437
|
+
}
|
|
4438
|
+
|
|
4105
4439
|
try {
|
|
4106
4440
|
return makeArray( context.querySelectorAll(query), extra );
|
|
4107
4441
|
} catch(qsaError) {}
|
|
@@ -4112,14 +4446,23 @@ if ( document.querySelectorAll ) {
|
|
|
4112
4446
|
// IE 8 doesn't work on object elements
|
|
4113
4447
|
} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
|
|
4114
4448
|
var old = context.getAttribute( "id" ),
|
|
4115
|
-
nid = old || id
|
|
4449
|
+
nid = old || id,
|
|
4450
|
+
hasParent = context.parentNode,
|
|
4451
|
+
relativeHierarchySelector = /^\s*[+~]/.test( query );
|
|
4116
4452
|
|
|
4117
4453
|
if ( !old ) {
|
|
4118
4454
|
context.setAttribute( "id", nid );
|
|
4455
|
+
} else {
|
|
4456
|
+
nid = nid.replace( /'/g, "\\$&" );
|
|
4457
|
+
}
|
|
4458
|
+
if ( relativeHierarchySelector && hasParent ) {
|
|
4459
|
+
context = context.parentNode;
|
|
4119
4460
|
}
|
|
4120
4461
|
|
|
4121
4462
|
try {
|
|
4122
|
-
|
|
4463
|
+
if ( !relativeHierarchySelector || hasParent ) {
|
|
4464
|
+
return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
|
|
4465
|
+
}
|
|
4123
4466
|
|
|
4124
4467
|
} catch(pseudoError) {
|
|
4125
4468
|
} finally {
|
|
@@ -4344,7 +4687,14 @@ var runtil = /Until$/,
|
|
|
4344
4687
|
rmultiselector = /,/,
|
|
4345
4688
|
isSimple = /^.[^:#\[\.,]*$/,
|
|
4346
4689
|
slice = Array.prototype.slice,
|
|
4347
|
-
POS = jQuery.expr.match.POS
|
|
4690
|
+
POS = jQuery.expr.match.POS,
|
|
4691
|
+
// methods guaranteed to produce a unique set when starting from a unique set
|
|
4692
|
+
guaranteedUnique = {
|
|
4693
|
+
children: true,
|
|
4694
|
+
contents: true,
|
|
4695
|
+
next: true,
|
|
4696
|
+
prev: true
|
|
4697
|
+
};
|
|
4348
4698
|
|
|
4349
4699
|
jQuery.fn.extend({
|
|
4350
4700
|
find: function( selector ) {
|
|
@@ -4389,7 +4739,7 @@ jQuery.fn.extend({
|
|
|
4389
4739
|
filter: function( selector ) {
|
|
4390
4740
|
return this.pushStack( winnow(this, selector, true), "filter", selector );
|
|
4391
4741
|
},
|
|
4392
|
-
|
|
4742
|
+
|
|
4393
4743
|
is: function( selector ) {
|
|
4394
4744
|
return !!selector && jQuery.filter( selector, this ).length > 0;
|
|
4395
4745
|
},
|
|
@@ -4407,7 +4757,7 @@ jQuery.fn.extend({
|
|
|
4407
4757
|
selector = selectors[i];
|
|
4408
4758
|
|
|
4409
4759
|
if ( !matches[selector] ) {
|
|
4410
|
-
matches[selector] = jQuery.expr.match.POS.test( selector ) ?
|
|
4760
|
+
matches[selector] = jQuery.expr.match.POS.test( selector ) ?
|
|
4411
4761
|
jQuery( selector, context || this.context ) :
|
|
4412
4762
|
selector;
|
|
4413
4763
|
}
|
|
@@ -4430,7 +4780,7 @@ jQuery.fn.extend({
|
|
|
4430
4780
|
return ret;
|
|
4431
4781
|
}
|
|
4432
4782
|
|
|
4433
|
-
var pos = POS.test( selectors ) ?
|
|
4783
|
+
var pos = POS.test( selectors ) ?
|
|
4434
4784
|
jQuery( selectors, context || this.context ) : null;
|
|
4435
4785
|
|
|
4436
4786
|
for ( i = 0, l = this.length; i < l; i++ ) {
|
|
@@ -4451,10 +4801,10 @@ jQuery.fn.extend({
|
|
|
4451
4801
|
}
|
|
4452
4802
|
|
|
4453
4803
|
ret = ret.length > 1 ? jQuery.unique(ret) : ret;
|
|
4454
|
-
|
|
4804
|
+
|
|
4455
4805
|
return this.pushStack( ret, "closest", selectors );
|
|
4456
4806
|
},
|
|
4457
|
-
|
|
4807
|
+
|
|
4458
4808
|
// Determine the position of an element within
|
|
4459
4809
|
// the matched set of elements
|
|
4460
4810
|
index: function( elem ) {
|
|
@@ -4472,7 +4822,7 @@ jQuery.fn.extend({
|
|
|
4472
4822
|
|
|
4473
4823
|
add: function( selector, context ) {
|
|
4474
4824
|
var set = typeof selector === "string" ?
|
|
4475
|
-
jQuery( selector, context
|
|
4825
|
+
jQuery( selector, context ) :
|
|
4476
4826
|
jQuery.makeArray( selector ),
|
|
4477
4827
|
all = jQuery.merge( this.get(), set );
|
|
4478
4828
|
|
|
@@ -4534,8 +4884,13 @@ jQuery.each({
|
|
|
4534
4884
|
}
|
|
4535
4885
|
}, function( name, fn ) {
|
|
4536
4886
|
jQuery.fn[ name ] = function( until, selector ) {
|
|
4537
|
-
var ret = jQuery.map( this, fn, until )
|
|
4538
|
-
|
|
4887
|
+
var ret = jQuery.map( this, fn, until ),
|
|
4888
|
+
// The variable 'args' was introduced in
|
|
4889
|
+
// https://github.com/jquery/jquery/commit/52a0238
|
|
4890
|
+
// to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
|
|
4891
|
+
// http://code.google.com/p/v8/issues/detail?id=1050
|
|
4892
|
+
args = slice.call(arguments);
|
|
4893
|
+
|
|
4539
4894
|
if ( !runtil.test( name ) ) {
|
|
4540
4895
|
selector = until;
|
|
4541
4896
|
}
|
|
@@ -4544,13 +4899,13 @@ jQuery.each({
|
|
|
4544
4899
|
ret = jQuery.filter( selector, ret );
|
|
4545
4900
|
}
|
|
4546
4901
|
|
|
4547
|
-
ret = this.length > 1 ? jQuery.unique( ret ) : ret;
|
|
4902
|
+
ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
|
|
4548
4903
|
|
|
4549
4904
|
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
|
|
4550
4905
|
ret = ret.reverse();
|
|
4551
4906
|
}
|
|
4552
4907
|
|
|
4553
|
-
return this.pushStack( ret, name,
|
|
4908
|
+
return this.pushStack( ret, name, args.join(",") );
|
|
4554
4909
|
};
|
|
4555
4910
|
});
|
|
4556
4911
|
|
|
@@ -4564,7 +4919,7 @@ jQuery.extend({
|
|
|
4564
4919
|
jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
|
|
4565
4920
|
jQuery.find.matches(expr, elems);
|
|
4566
4921
|
},
|
|
4567
|
-
|
|
4922
|
+
|
|
4568
4923
|
dir: function( elem, dir, until ) {
|
|
4569
4924
|
var matched = [],
|
|
4570
4925
|
cur = elem[ dir ];
|
|
@@ -4646,9 +5001,8 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
|
|
|
4646
5001
|
rtbody = /<tbody/i,
|
|
4647
5002
|
rhtml = /<|&#?\w+;/,
|
|
4648
5003
|
rnocache = /<(?:script|object|embed|option|style)/i,
|
|
4649
|
-
// checked="checked" or checked
|
|
5004
|
+
// checked="checked" or checked
|
|
4650
5005
|
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
|
4651
|
-
raction = /\=([^="'>\s]+\/)>/g,
|
|
4652
5006
|
wrapMap = {
|
|
4653
5007
|
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
|
4654
5008
|
legend: [ 1, "<fieldset>", "</fieldset>" ],
|
|
@@ -4788,7 +5142,7 @@ jQuery.fn.extend({
|
|
|
4788
5142
|
return set;
|
|
4789
5143
|
}
|
|
4790
5144
|
},
|
|
4791
|
-
|
|
5145
|
+
|
|
4792
5146
|
// keepData is for internal use only--do not document
|
|
4793
5147
|
remove: function( selector, keepData ) {
|
|
4794
5148
|
for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
|
|
@@ -4803,7 +5157,7 @@ jQuery.fn.extend({
|
|
|
4803
5157
|
}
|
|
4804
5158
|
}
|
|
4805
5159
|
}
|
|
4806
|
-
|
|
5160
|
+
|
|
4807
5161
|
return this;
|
|
4808
5162
|
},
|
|
4809
5163
|
|
|
@@ -4819,48 +5173,17 @@ jQuery.fn.extend({
|
|
|
4819
5173
|
elem.removeChild( elem.firstChild );
|
|
4820
5174
|
}
|
|
4821
5175
|
}
|
|
4822
|
-
|
|
5176
|
+
|
|
4823
5177
|
return this;
|
|
4824
5178
|
},
|
|
4825
5179
|
|
|
4826
|
-
clone: function(
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
|
|
4830
|
-
// IE copies events bound via attachEvent when
|
|
4831
|
-
// using cloneNode. Calling detachEvent on the
|
|
4832
|
-
// clone will also remove the events from the orignal
|
|
4833
|
-
// In order to get around this, we use innerHTML.
|
|
4834
|
-
// Unfortunately, this means some modifications to
|
|
4835
|
-
// attributes in IE that are actually only stored
|
|
4836
|
-
// as properties will not be copied (such as the
|
|
4837
|
-
// the name attribute on an input).
|
|
4838
|
-
var html = this.outerHTML,
|
|
4839
|
-
ownerDocument = this.ownerDocument;
|
|
4840
|
-
|
|
4841
|
-
if ( !html ) {
|
|
4842
|
-
var div = ownerDocument.createElement("div");
|
|
4843
|
-
div.appendChild( this.cloneNode(true) );
|
|
4844
|
-
html = div.innerHTML;
|
|
4845
|
-
}
|
|
4846
|
-
|
|
4847
|
-
return jQuery.clean([html.replace(rinlinejQuery, "")
|
|
4848
|
-
// Handle the case in IE 8 where action=/test/> self-closes a tag
|
|
4849
|
-
.replace(raction, '="$1">')
|
|
4850
|
-
.replace(rleadingWhitespace, "")], ownerDocument)[0];
|
|
4851
|
-
} else {
|
|
4852
|
-
return this.cloneNode(true);
|
|
4853
|
-
}
|
|
4854
|
-
});
|
|
4855
|
-
|
|
4856
|
-
// Copy the events from the original to the clone
|
|
4857
|
-
if ( events === true ) {
|
|
4858
|
-
cloneCopyEvent( this, ret );
|
|
4859
|
-
cloneCopyEvent( this.find("*"), ret.find("*") );
|
|
4860
|
-
}
|
|
5180
|
+
clone: function( dataAndEvents, deepDataAndEvents ) {
|
|
5181
|
+
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
|
5182
|
+
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
|
4861
5183
|
|
|
4862
|
-
|
|
4863
|
-
|
|
5184
|
+
return this.map( function () {
|
|
5185
|
+
return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
|
|
5186
|
+
});
|
|
4864
5187
|
},
|
|
4865
5188
|
|
|
4866
5189
|
html: function( value ) {
|
|
@@ -4970,9 +5293,9 @@ jQuery.fn.extend({
|
|
|
4970
5293
|
} else {
|
|
4971
5294
|
results = jQuery.buildFragment( args, this, scripts );
|
|
4972
5295
|
}
|
|
4973
|
-
|
|
5296
|
+
|
|
4974
5297
|
fragment = results.fragment;
|
|
4975
|
-
|
|
5298
|
+
|
|
4976
5299
|
if ( fragment.childNodes.length === 1 ) {
|
|
4977
5300
|
first = fragment = fragment.firstChild;
|
|
4978
5301
|
} else {
|
|
@@ -4982,13 +5305,20 @@ jQuery.fn.extend({
|
|
|
4982
5305
|
if ( first ) {
|
|
4983
5306
|
table = table && jQuery.nodeName( first, "tr" );
|
|
4984
5307
|
|
|
4985
|
-
for ( var i = 0, l = this.length; i < l; i++ ) {
|
|
5308
|
+
for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
|
|
4986
5309
|
callback.call(
|
|
4987
5310
|
table ?
|
|
4988
5311
|
root(this[i], first) :
|
|
4989
5312
|
this[i],
|
|
4990
|
-
|
|
4991
|
-
|
|
5313
|
+
// Make sure that we do not leak memory by inadvertently discarding
|
|
5314
|
+
// the original fragment (which might have attached data) instead of
|
|
5315
|
+
// using it; in addition, use the original fragment object for the last
|
|
5316
|
+
// item instead of first because it can end up being emptied incorrectly
|
|
5317
|
+
// in certain situations (Bug #8070).
|
|
5318
|
+
// Fragments from the fragment cache must always be cloned and never used
|
|
5319
|
+
// in place.
|
|
5320
|
+
results.cacheable || (l > 1 && i < lastIndex) ?
|
|
5321
|
+
jQuery.clone( fragment, true, true ) :
|
|
4992
5322
|
fragment
|
|
4993
5323
|
);
|
|
4994
5324
|
}
|
|
@@ -5010,41 +5340,97 @@ function root( elem, cur ) {
|
|
|
5010
5340
|
elem;
|
|
5011
5341
|
}
|
|
5012
5342
|
|
|
5013
|
-
function cloneCopyEvent(
|
|
5014
|
-
var i = 0;
|
|
5343
|
+
function cloneCopyEvent( src, dest ) {
|
|
5015
5344
|
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5345
|
+
if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
|
|
5346
|
+
return;
|
|
5347
|
+
}
|
|
5348
|
+
|
|
5349
|
+
var internalKey = jQuery.expando,
|
|
5350
|
+
oldData = jQuery.data( src ),
|
|
5351
|
+
curData = jQuery.data( dest, oldData );
|
|
5020
5352
|
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
|
|
5353
|
+
// Switch to use the internal data object, if it exists, for the next
|
|
5354
|
+
// stage of data copying
|
|
5355
|
+
if ( (oldData = oldData[ internalKey ]) ) {
|
|
5356
|
+
var events = oldData.events;
|
|
5357
|
+
curData = curData[ internalKey ] = jQuery.extend({}, oldData);
|
|
5024
5358
|
|
|
5025
5359
|
if ( events ) {
|
|
5026
5360
|
delete curData.handle;
|
|
5027
5361
|
curData.events = {};
|
|
5028
5362
|
|
|
5029
5363
|
for ( var type in events ) {
|
|
5030
|
-
for ( var
|
|
5031
|
-
jQuery.event.add(
|
|
5364
|
+
for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
|
|
5365
|
+
jQuery.event.add( dest, type, events[ type ][ i ], events[ type ][ i ].data );
|
|
5032
5366
|
}
|
|
5033
5367
|
}
|
|
5034
5368
|
}
|
|
5035
|
-
}
|
|
5369
|
+
}
|
|
5370
|
+
}
|
|
5371
|
+
|
|
5372
|
+
function cloneFixAttributes(src, dest) {
|
|
5373
|
+
// We do not need to do anything for non-Elements
|
|
5374
|
+
if ( dest.nodeType !== 1 ) {
|
|
5375
|
+
return;
|
|
5376
|
+
}
|
|
5377
|
+
|
|
5378
|
+
var nodeName = dest.nodeName.toLowerCase();
|
|
5379
|
+
|
|
5380
|
+
// clearAttributes removes the attributes, which we don't want,
|
|
5381
|
+
// but also removes the attachEvent events, which we *do* want
|
|
5382
|
+
dest.clearAttributes();
|
|
5383
|
+
|
|
5384
|
+
// mergeAttributes, in contrast, only merges back on the
|
|
5385
|
+
// original attributes, not the events
|
|
5386
|
+
dest.mergeAttributes(src);
|
|
5387
|
+
|
|
5388
|
+
// IE6-8 fail to clone children inside object elements that use
|
|
5389
|
+
// the proprietary classid attribute value (rather than the type
|
|
5390
|
+
// attribute) to identify the type of content to display
|
|
5391
|
+
if ( nodeName === "object" ) {
|
|
5392
|
+
dest.outerHTML = src.outerHTML;
|
|
5393
|
+
|
|
5394
|
+
} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
|
|
5395
|
+
// IE6-8 fails to persist the checked state of a cloned checkbox
|
|
5396
|
+
// or radio button. Worse, IE6-7 fail to give the cloned element
|
|
5397
|
+
// a checked appearance if the defaultChecked value isn't also set
|
|
5398
|
+
if ( src.checked ) {
|
|
5399
|
+
dest.defaultChecked = dest.checked = src.checked;
|
|
5400
|
+
}
|
|
5401
|
+
|
|
5402
|
+
// IE6-7 get confused and end up setting the value of a cloned
|
|
5403
|
+
// checkbox/radio button to an empty string instead of "on"
|
|
5404
|
+
if ( dest.value !== src.value ) {
|
|
5405
|
+
dest.value = src.value;
|
|
5406
|
+
}
|
|
5407
|
+
|
|
5408
|
+
// IE6-8 fails to return the selected option to the default selected
|
|
5409
|
+
// state when cloning options
|
|
5410
|
+
} else if ( nodeName === "option" ) {
|
|
5411
|
+
dest.selected = src.defaultSelected;
|
|
5412
|
+
|
|
5413
|
+
// IE6-8 fails to set the defaultValue to the correct value when
|
|
5414
|
+
// cloning other types of input fields
|
|
5415
|
+
} else if ( nodeName === "input" || nodeName === "textarea" ) {
|
|
5416
|
+
dest.defaultValue = src.defaultValue;
|
|
5417
|
+
}
|
|
5418
|
+
|
|
5419
|
+
// Event data gets referenced instead of copied if the expando
|
|
5420
|
+
// gets copied too
|
|
5421
|
+
dest.removeAttribute( jQuery.expando );
|
|
5036
5422
|
}
|
|
5037
5423
|
|
|
5038
5424
|
jQuery.buildFragment = function( args, nodes, scripts ) {
|
|
5039
5425
|
var fragment, cacheable, cacheresults,
|
|
5040
5426
|
doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
|
|
5041
5427
|
|
|
5042
|
-
// Only cache "small" (1/2 KB) strings that are associated with the main document
|
|
5428
|
+
// Only cache "small" (1/2 KB) HTML strings that are associated with the main document
|
|
5043
5429
|
// Cloning options loses the selected state, so don't cache them
|
|
5044
5430
|
// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
|
|
5045
5431
|
// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
|
|
5046
5432
|
if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
|
|
5047
|
-
!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
|
|
5433
|
+
args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
|
|
5048
5434
|
|
|
5049
5435
|
cacheable = true;
|
|
5050
5436
|
cacheresults = jQuery.fragments[ args[0] ];
|
|
@@ -5080,24 +5466,72 @@ jQuery.each({
|
|
|
5080
5466
|
var ret = [],
|
|
5081
5467
|
insert = jQuery( selector ),
|
|
5082
5468
|
parent = this.length === 1 && this[0].parentNode;
|
|
5083
|
-
|
|
5469
|
+
|
|
5084
5470
|
if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
|
|
5085
5471
|
insert[ original ]( this[0] );
|
|
5086
5472
|
return this;
|
|
5087
|
-
|
|
5473
|
+
|
|
5088
5474
|
} else {
|
|
5089
5475
|
for ( var i = 0, l = insert.length; i < l; i++ ) {
|
|
5090
5476
|
var elems = (i > 0 ? this.clone(true) : this).get();
|
|
5091
5477
|
jQuery( insert[i] )[ original ]( elems );
|
|
5092
5478
|
ret = ret.concat( elems );
|
|
5093
5479
|
}
|
|
5094
|
-
|
|
5480
|
+
|
|
5095
5481
|
return this.pushStack( ret, name, insert.selector );
|
|
5096
5482
|
}
|
|
5097
5483
|
};
|
|
5098
5484
|
});
|
|
5099
5485
|
|
|
5100
5486
|
jQuery.extend({
|
|
5487
|
+
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
|
5488
|
+
var clone = elem.cloneNode(true),
|
|
5489
|
+
srcElements,
|
|
5490
|
+
destElements,
|
|
5491
|
+
i;
|
|
5492
|
+
|
|
5493
|
+
if ( !jQuery.support.noCloneEvent && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
|
|
5494
|
+
// IE copies events bound via attachEvent when using cloneNode.
|
|
5495
|
+
// Calling detachEvent on the clone will also remove the events
|
|
5496
|
+
// from the original. In order to get around this, we use some
|
|
5497
|
+
// proprietary methods to clear the events. Thanks to MooTools
|
|
5498
|
+
// guys for this hotness.
|
|
5499
|
+
|
|
5500
|
+
cloneFixAttributes( elem, clone );
|
|
5501
|
+
|
|
5502
|
+
// Using Sizzle here is crazy slow, so we use getElementsByTagName
|
|
5503
|
+
// instead
|
|
5504
|
+
srcElements = elem.getElementsByTagName("*");
|
|
5505
|
+
destElements = clone.getElementsByTagName("*");
|
|
5506
|
+
|
|
5507
|
+
// Weird iteration because IE will replace the length property
|
|
5508
|
+
// with an element if you are cloning the body and one of the
|
|
5509
|
+
// elements on the page has a name or id of "length"
|
|
5510
|
+
for ( i = 0; srcElements[i]; ++i ) {
|
|
5511
|
+
cloneFixAttributes( srcElements[i], destElements[i] );
|
|
5512
|
+
}
|
|
5513
|
+
}
|
|
5514
|
+
|
|
5515
|
+
// Copy the events from the original to the clone
|
|
5516
|
+
if ( dataAndEvents ) {
|
|
5517
|
+
|
|
5518
|
+
cloneCopyEvent( elem, clone );
|
|
5519
|
+
|
|
5520
|
+
if ( deepDataAndEvents && "getElementsByTagName" in elem ) {
|
|
5521
|
+
|
|
5522
|
+
srcElements = elem.getElementsByTagName("*");
|
|
5523
|
+
destElements = clone.getElementsByTagName("*");
|
|
5524
|
+
|
|
5525
|
+
if ( srcElements.length ) {
|
|
5526
|
+
for ( i = 0; srcElements[i]; ++i ) {
|
|
5527
|
+
cloneCopyEvent( srcElements[i], destElements[i] );
|
|
5528
|
+
}
|
|
5529
|
+
}
|
|
5530
|
+
}
|
|
5531
|
+
}
|
|
5532
|
+
// Return the cloned set
|
|
5533
|
+
return clone;
|
|
5534
|
+
},
|
|
5101
5535
|
clean: function( elems, context, fragment, scripts ) {
|
|
5102
5536
|
context = context || document;
|
|
5103
5537
|
|
|
@@ -5179,7 +5613,7 @@ jQuery.extend({
|
|
|
5179
5613
|
for ( i = 0; ret[i]; i++ ) {
|
|
5180
5614
|
if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
|
|
5181
5615
|
scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
|
|
5182
|
-
|
|
5616
|
+
|
|
5183
5617
|
} else {
|
|
5184
5618
|
if ( ret[i].nodeType === 1 ) {
|
|
5185
5619
|
ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
|
|
@@ -5191,40 +5625,45 @@ jQuery.extend({
|
|
|
5191
5625
|
|
|
5192
5626
|
return ret;
|
|
5193
5627
|
},
|
|
5194
|
-
|
|
5628
|
+
|
|
5195
5629
|
cleanData: function( elems ) {
|
|
5196
|
-
var data, id, cache = jQuery.cache,
|
|
5197
|
-
special = jQuery.event.special,
|
|
5630
|
+
var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
|
|
5198
5631
|
deleteExpando = jQuery.support.deleteExpando;
|
|
5199
|
-
|
|
5632
|
+
|
|
5200
5633
|
for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
|
|
5201
5634
|
if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
|
|
5202
5635
|
continue;
|
|
5203
5636
|
}
|
|
5204
5637
|
|
|
5205
5638
|
id = elem[ jQuery.expando ];
|
|
5206
|
-
|
|
5639
|
+
|
|
5207
5640
|
if ( id ) {
|
|
5208
|
-
data = cache[ id ];
|
|
5209
|
-
|
|
5641
|
+
data = cache[ id ] && cache[ id ][ internalKey ];
|
|
5642
|
+
|
|
5210
5643
|
if ( data && data.events ) {
|
|
5211
5644
|
for ( var type in data.events ) {
|
|
5212
5645
|
if ( special[ type ] ) {
|
|
5213
5646
|
jQuery.event.remove( elem, type );
|
|
5214
5647
|
|
|
5648
|
+
// This is a shortcut to avoid jQuery.event.remove's overhead
|
|
5215
5649
|
} else {
|
|
5216
5650
|
jQuery.removeEvent( elem, type, data.handle );
|
|
5217
5651
|
}
|
|
5218
5652
|
}
|
|
5653
|
+
|
|
5654
|
+
// Null the DOM reference to avoid IE6/7/8 leak (#7054)
|
|
5655
|
+
if ( data.handle ) {
|
|
5656
|
+
data.handle.elem = null;
|
|
5657
|
+
}
|
|
5219
5658
|
}
|
|
5220
|
-
|
|
5659
|
+
|
|
5221
5660
|
if ( deleteExpando ) {
|
|
5222
5661
|
delete elem[ jQuery.expando ];
|
|
5223
5662
|
|
|
5224
5663
|
} else if ( elem.removeAttribute ) {
|
|
5225
5664
|
elem.removeAttribute( jQuery.expando );
|
|
5226
5665
|
}
|
|
5227
|
-
|
|
5666
|
+
|
|
5228
5667
|
delete cache[ id ];
|
|
5229
5668
|
}
|
|
5230
5669
|
}
|
|
@@ -5515,8 +5954,9 @@ if ( document.defaultView && document.defaultView.getComputedStyle ) {
|
|
|
5515
5954
|
|
|
5516
5955
|
if ( document.documentElement.currentStyle ) {
|
|
5517
5956
|
currentStyle = function( elem, name ) {
|
|
5518
|
-
var left,
|
|
5957
|
+
var left,
|
|
5519
5958
|
ret = elem.currentStyle && elem.currentStyle[ name ],
|
|
5959
|
+
rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
|
|
5520
5960
|
style = elem.style;
|
|
5521
5961
|
|
|
5522
5962
|
// From the awesome hack by Dean Edwards
|
|
@@ -5527,16 +5967,19 @@ if ( document.documentElement.currentStyle ) {
|
|
|
5527
5967
|
if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
|
|
5528
5968
|
// Remember the original values
|
|
5529
5969
|
left = style.left;
|
|
5530
|
-
rsLeft = elem.runtimeStyle.left;
|
|
5531
5970
|
|
|
5532
5971
|
// Put in the new values to get a computed value out
|
|
5533
|
-
|
|
5972
|
+
if ( rsLeft ) {
|
|
5973
|
+
elem.runtimeStyle.left = elem.currentStyle.left;
|
|
5974
|
+
}
|
|
5534
5975
|
style.left = name === "fontSize" ? "1em" : (ret || 0);
|
|
5535
5976
|
ret = style.pixelLeft + "px";
|
|
5536
5977
|
|
|
5537
5978
|
// Revert the changed values
|
|
5538
5979
|
style.left = left;
|
|
5539
|
-
|
|
5980
|
+
if ( rsLeft ) {
|
|
5981
|
+
elem.runtimeStyle.left = rsLeft;
|
|
5982
|
+
}
|
|
5540
5983
|
}
|
|
5541
5984
|
|
|
5542
5985
|
return ret === "" ? "auto" : ret;
|
|
@@ -5587,21 +6030,140 @@ if ( jQuery.expr && jQuery.expr.filters ) {
|
|
|
5587
6030
|
|
|
5588
6031
|
(function( jQuery ) {
|
|
5589
6032
|
|
|
5590
|
-
var
|
|
5591
|
-
|
|
5592
|
-
|
|
6033
|
+
var r20 = /%20/g,
|
|
6034
|
+
rbracket = /\[\]$/,
|
|
6035
|
+
rCRLF = /\r?\n/g,
|
|
6036
|
+
rhash = /#.*$/,
|
|
6037
|
+
rheaders = /^(.*?):\s*(.*?)\r?$/mg, // IE leaves an \r character at EOL
|
|
5593
6038
|
rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
|
6039
|
+
// #7653, #8125, #8152: local protocol detection
|
|
6040
|
+
rlocalProtocol = /(?:^file|^widget|\-extension):$/,
|
|
5594
6041
|
rnoContent = /^(?:GET|HEAD)$/,
|
|
5595
|
-
|
|
5596
|
-
jsre = /\=\?(&|$)/,
|
|
6042
|
+
rprotocol = /^\/\//,
|
|
5597
6043
|
rquery = /\?/,
|
|
6044
|
+
rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
|
|
6045
|
+
rselectTextarea = /^(?:select|textarea)/i,
|
|
6046
|
+
rspacesAjax = /\s+/,
|
|
5598
6047
|
rts = /([?&])_=[^&]*/,
|
|
5599
|
-
rurl = /^(\w+:)
|
|
5600
|
-
r20 = /%20/g,
|
|
5601
|
-
rhash = /#.*$/,
|
|
6048
|
+
rurl = /^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,
|
|
5602
6049
|
|
|
5603
6050
|
// Keep a copy of the old load method
|
|
5604
|
-
_load = jQuery.fn.load
|
|
6051
|
+
_load = jQuery.fn.load,
|
|
6052
|
+
|
|
6053
|
+
/* Prefilters
|
|
6054
|
+
* 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
|
6055
|
+
* 2) These are called:
|
|
6056
|
+
* - BEFORE asking for a transport
|
|
6057
|
+
* - AFTER param serialization (s.data is a string if s.processData is true)
|
|
6058
|
+
* 3) key is the dataType
|
|
6059
|
+
* 4) the catchall symbol "*" can be used
|
|
6060
|
+
* 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
|
6061
|
+
*/
|
|
6062
|
+
prefilters = {},
|
|
6063
|
+
|
|
6064
|
+
/* Transports bindings
|
|
6065
|
+
* 1) key is the dataType
|
|
6066
|
+
* 2) the catchall symbol "*" can be used
|
|
6067
|
+
* 3) selection will start with transport dataType and THEN go to "*" if needed
|
|
6068
|
+
*/
|
|
6069
|
+
transports = {},
|
|
6070
|
+
|
|
6071
|
+
// Document location
|
|
6072
|
+
ajaxLocation,
|
|
6073
|
+
|
|
6074
|
+
// Document location segments
|
|
6075
|
+
ajaxLocParts;
|
|
6076
|
+
|
|
6077
|
+
// #8138, IE may throw an exception when accessing
|
|
6078
|
+
// a field from document.location if document.domain has been set
|
|
6079
|
+
try {
|
|
6080
|
+
ajaxLocation = document.location.href;
|
|
6081
|
+
} catch( e ) {
|
|
6082
|
+
// Use the href attribute of an A element
|
|
6083
|
+
// since IE will modify it given document.location
|
|
6084
|
+
ajaxLocation = document.createElement( "a" );
|
|
6085
|
+
ajaxLocation.href = "";
|
|
6086
|
+
ajaxLocation = ajaxLocation.href;
|
|
6087
|
+
}
|
|
6088
|
+
|
|
6089
|
+
// Segment location into parts
|
|
6090
|
+
ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );
|
|
6091
|
+
|
|
6092
|
+
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
|
6093
|
+
function addToPrefiltersOrTransports( structure ) {
|
|
6094
|
+
|
|
6095
|
+
// dataTypeExpression is optional and defaults to "*"
|
|
6096
|
+
return function( dataTypeExpression, func ) {
|
|
6097
|
+
|
|
6098
|
+
if ( typeof dataTypeExpression !== "string" ) {
|
|
6099
|
+
func = dataTypeExpression;
|
|
6100
|
+
dataTypeExpression = "*";
|
|
6101
|
+
}
|
|
6102
|
+
|
|
6103
|
+
if ( jQuery.isFunction( func ) ) {
|
|
6104
|
+
var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
|
|
6105
|
+
i = 0,
|
|
6106
|
+
length = dataTypes.length,
|
|
6107
|
+
dataType,
|
|
6108
|
+
list,
|
|
6109
|
+
placeBefore;
|
|
6110
|
+
|
|
6111
|
+
// For each dataType in the dataTypeExpression
|
|
6112
|
+
for(; i < length; i++ ) {
|
|
6113
|
+
dataType = dataTypes[ i ];
|
|
6114
|
+
// We control if we're asked to add before
|
|
6115
|
+
// any existing element
|
|
6116
|
+
placeBefore = /^\+/.test( dataType );
|
|
6117
|
+
if ( placeBefore ) {
|
|
6118
|
+
dataType = dataType.substr( 1 ) || "*";
|
|
6119
|
+
}
|
|
6120
|
+
list = structure[ dataType ] = structure[ dataType ] || [];
|
|
6121
|
+
// then we add to the structure accordingly
|
|
6122
|
+
list[ placeBefore ? "unshift" : "push" ]( func );
|
|
6123
|
+
}
|
|
6124
|
+
}
|
|
6125
|
+
};
|
|
6126
|
+
}
|
|
6127
|
+
|
|
6128
|
+
//Base inspection function for prefilters and transports
|
|
6129
|
+
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
|
|
6130
|
+
dataType /* internal */, inspected /* internal */ ) {
|
|
6131
|
+
|
|
6132
|
+
dataType = dataType || options.dataTypes[ 0 ];
|
|
6133
|
+
inspected = inspected || {};
|
|
6134
|
+
|
|
6135
|
+
inspected[ dataType ] = true;
|
|
6136
|
+
|
|
6137
|
+
var list = structure[ dataType ],
|
|
6138
|
+
i = 0,
|
|
6139
|
+
length = list ? list.length : 0,
|
|
6140
|
+
executeOnly = ( structure === prefilters ),
|
|
6141
|
+
selection;
|
|
6142
|
+
|
|
6143
|
+
for(; i < length && ( executeOnly || !selection ); i++ ) {
|
|
6144
|
+
selection = list[ i ]( options, originalOptions, jqXHR );
|
|
6145
|
+
// If we got redirected to another dataType
|
|
6146
|
+
// we try there if executing only and not done already
|
|
6147
|
+
if ( typeof selection === "string" ) {
|
|
6148
|
+
if ( !executeOnly || inspected[ selection ] ) {
|
|
6149
|
+
selection = undefined;
|
|
6150
|
+
} else {
|
|
6151
|
+
options.dataTypes.unshift( selection );
|
|
6152
|
+
selection = inspectPrefiltersOrTransports(
|
|
6153
|
+
structure, options, originalOptions, jqXHR, selection, inspected );
|
|
6154
|
+
}
|
|
6155
|
+
}
|
|
6156
|
+
}
|
|
6157
|
+
// If we're only executing or nothing was selected
|
|
6158
|
+
// we try the catchall dataType if not done already
|
|
6159
|
+
if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
|
|
6160
|
+
selection = inspectPrefiltersOrTransports(
|
|
6161
|
+
structure, options, originalOptions, jqXHR, "*", inspected );
|
|
6162
|
+
}
|
|
6163
|
+
// unnecessary when only executing (prefilters)
|
|
6164
|
+
// but it'll be ignored by the caller in that case
|
|
6165
|
+
return selection;
|
|
6166
|
+
}
|
|
5605
6167
|
|
|
5606
6168
|
jQuery.fn.extend({
|
|
5607
6169
|
load: function( url, params, callback ) {
|
|
@@ -5613,10 +6175,10 @@ jQuery.fn.extend({
|
|
|
5613
6175
|
return this;
|
|
5614
6176
|
}
|
|
5615
6177
|
|
|
5616
|
-
var off = url.indexOf(" ");
|
|
6178
|
+
var off = url.indexOf( " " );
|
|
5617
6179
|
if ( off >= 0 ) {
|
|
5618
|
-
var selector = url.slice(off, url.length);
|
|
5619
|
-
url = url.slice(0, off);
|
|
6180
|
+
var selector = url.slice( off, url.length );
|
|
6181
|
+
url = url.slice( 0, off );
|
|
5620
6182
|
}
|
|
5621
6183
|
|
|
5622
6184
|
// Default to a GET request
|
|
@@ -5645,26 +6207,34 @@ jQuery.fn.extend({
|
|
|
5645
6207
|
type: type,
|
|
5646
6208
|
dataType: "html",
|
|
5647
6209
|
data: params,
|
|
5648
|
-
|
|
6210
|
+
// Complete callback (responseText is used internally)
|
|
6211
|
+
complete: function( jqXHR, status, responseText ) {
|
|
6212
|
+
// Store the response as specified by the jqXHR object
|
|
6213
|
+
responseText = jqXHR.responseText;
|
|
5649
6214
|
// If successful, inject the HTML into all the matched elements
|
|
5650
|
-
if (
|
|
6215
|
+
if ( jqXHR.isResolved() ) {
|
|
6216
|
+
// #4825: Get the actual response in case
|
|
6217
|
+
// a dataFilter is present in ajaxSettings
|
|
6218
|
+
jqXHR.done(function( r ) {
|
|
6219
|
+
responseText = r;
|
|
6220
|
+
});
|
|
5651
6221
|
// See if a selector was specified
|
|
5652
6222
|
self.html( selector ?
|
|
5653
6223
|
// Create a dummy div to hold the results
|
|
5654
6224
|
jQuery("<div>")
|
|
5655
6225
|
// inject the contents of the document in, removing the scripts
|
|
5656
6226
|
// to avoid any 'Permission Denied' errors in IE
|
|
5657
|
-
.append(
|
|
6227
|
+
.append(responseText.replace(rscript, ""))
|
|
5658
6228
|
|
|
5659
6229
|
// Locate the specified elements
|
|
5660
6230
|
.find(selector) :
|
|
5661
6231
|
|
|
5662
6232
|
// If not, just inject the full result
|
|
5663
|
-
|
|
6233
|
+
responseText );
|
|
5664
6234
|
}
|
|
5665
6235
|
|
|
5666
6236
|
if ( callback ) {
|
|
5667
|
-
self.each( callback, [
|
|
6237
|
+
self.each( callback, [ responseText, status, jqXHR ] );
|
|
5668
6238
|
}
|
|
5669
6239
|
}
|
|
5670
6240
|
});
|
|
@@ -5673,42 +6243,42 @@ jQuery.fn.extend({
|
|
|
5673
6243
|
},
|
|
5674
6244
|
|
|
5675
6245
|
serialize: function() {
|
|
5676
|
-
return jQuery.param(this.serializeArray());
|
|
6246
|
+
return jQuery.param( this.serializeArray() );
|
|
5677
6247
|
},
|
|
5678
6248
|
|
|
5679
6249
|
serializeArray: function() {
|
|
5680
|
-
return this.map(function()
|
|
5681
|
-
return this.elements ? jQuery.makeArray(this.elements) : this;
|
|
6250
|
+
return this.map(function(){
|
|
6251
|
+
return this.elements ? jQuery.makeArray( this.elements ) : this;
|
|
5682
6252
|
})
|
|
5683
|
-
.filter(function()
|
|
6253
|
+
.filter(function(){
|
|
5684
6254
|
return this.name && !this.disabled &&
|
|
5685
|
-
(this.checked || rselectTextarea.test(this.nodeName) ||
|
|
5686
|
-
rinput.test(this.type));
|
|
6255
|
+
( this.checked || rselectTextarea.test( this.nodeName ) ||
|
|
6256
|
+
rinput.test( this.type ) );
|
|
5687
6257
|
})
|
|
5688
|
-
.map(function( i, elem )
|
|
5689
|
-
var val = jQuery(this).val();
|
|
6258
|
+
.map(function( i, elem ){
|
|
6259
|
+
var val = jQuery( this ).val();
|
|
5690
6260
|
|
|
5691
6261
|
return val == null ?
|
|
5692
6262
|
null :
|
|
5693
|
-
jQuery.isArray(val) ?
|
|
5694
|
-
jQuery.map( val, function( val, i )
|
|
5695
|
-
return { name: elem.name, value: val };
|
|
6263
|
+
jQuery.isArray( val ) ?
|
|
6264
|
+
jQuery.map( val, function( val, i ){
|
|
6265
|
+
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
|
5696
6266
|
}) :
|
|
5697
|
-
{ name: elem.name, value: val };
|
|
6267
|
+
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
|
5698
6268
|
}).get();
|
|
5699
6269
|
}
|
|
5700
6270
|
});
|
|
5701
6271
|
|
|
5702
6272
|
// Attach a bunch of functions for handling common AJAX events
|
|
5703
|
-
jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o )
|
|
5704
|
-
jQuery.fn[o] = function( f )
|
|
5705
|
-
return this.bind(o, f);
|
|
6273
|
+
jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
|
|
6274
|
+
jQuery.fn[ o ] = function( f ){
|
|
6275
|
+
return this.bind( o, f );
|
|
5706
6276
|
};
|
|
5707
|
-
});
|
|
6277
|
+
} );
|
|
5708
6278
|
|
|
5709
|
-
jQuery.
|
|
5710
|
-
|
|
5711
|
-
// shift arguments if data argument was
|
|
6279
|
+
jQuery.each( [ "get", "post" ], function( i, method ) {
|
|
6280
|
+
jQuery[ method ] = function( url, data, callback, type ) {
|
|
6281
|
+
// shift arguments if data argument was omitted
|
|
5712
6282
|
if ( jQuery.isFunction( data ) ) {
|
|
5713
6283
|
type = type || callback;
|
|
5714
6284
|
callback = data;
|
|
@@ -5716,45 +6286,35 @@ jQuery.extend({
|
|
|
5716
6286
|
}
|
|
5717
6287
|
|
|
5718
6288
|
return jQuery.ajax({
|
|
5719
|
-
type:
|
|
6289
|
+
type: method,
|
|
5720
6290
|
url: url,
|
|
5721
6291
|
data: data,
|
|
5722
6292
|
success: callback,
|
|
5723
6293
|
dataType: type
|
|
5724
6294
|
});
|
|
5725
|
-
}
|
|
6295
|
+
};
|
|
6296
|
+
} );
|
|
6297
|
+
|
|
6298
|
+
jQuery.extend({
|
|
5726
6299
|
|
|
5727
6300
|
getScript: function( url, callback ) {
|
|
5728
|
-
return jQuery.get(url, null, callback, "script");
|
|
6301
|
+
return jQuery.get( url, null, callback, "script" );
|
|
5729
6302
|
},
|
|
5730
6303
|
|
|
5731
6304
|
getJSON: function( url, data, callback ) {
|
|
5732
|
-
return jQuery.get(url, data, callback, "json");
|
|
5733
|
-
},
|
|
5734
|
-
|
|
5735
|
-
post: function( url, data, callback, type ) {
|
|
5736
|
-
// shift arguments if data argument was omited
|
|
5737
|
-
if ( jQuery.isFunction( data ) ) {
|
|
5738
|
-
type = type || callback;
|
|
5739
|
-
callback = data;
|
|
5740
|
-
data = {};
|
|
5741
|
-
}
|
|
5742
|
-
|
|
5743
|
-
return jQuery.ajax({
|
|
5744
|
-
type: "POST",
|
|
5745
|
-
url: url,
|
|
5746
|
-
data: data,
|
|
5747
|
-
success: callback,
|
|
5748
|
-
dataType: type
|
|
5749
|
-
});
|
|
6305
|
+
return jQuery.get( url, data, callback, "json" );
|
|
5750
6306
|
},
|
|
5751
6307
|
|
|
5752
6308
|
ajaxSetup: function( settings ) {
|
|
5753
|
-
jQuery.extend( jQuery.ajaxSettings, settings );
|
|
6309
|
+
jQuery.extend( true, jQuery.ajaxSettings, settings );
|
|
6310
|
+
if ( settings.context ) {
|
|
6311
|
+
jQuery.ajaxSettings.context = settings.context;
|
|
6312
|
+
}
|
|
5754
6313
|
},
|
|
5755
6314
|
|
|
5756
6315
|
ajaxSettings: {
|
|
5757
|
-
url:
|
|
6316
|
+
url: ajaxLocation,
|
|
6317
|
+
isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
|
|
5758
6318
|
global: true,
|
|
5759
6319
|
type: "GET",
|
|
5760
6320
|
contentType: "application/x-www-form-urlencoded",
|
|
@@ -5763,332 +6323,424 @@ jQuery.extend({
|
|
|
5763
6323
|
/*
|
|
5764
6324
|
timeout: 0,
|
|
5765
6325
|
data: null,
|
|
6326
|
+
dataType: null,
|
|
5766
6327
|
username: null,
|
|
5767
6328
|
password: null,
|
|
6329
|
+
cache: null,
|
|
5768
6330
|
traditional: false,
|
|
6331
|
+
headers: {},
|
|
6332
|
+
crossDomain: null,
|
|
5769
6333
|
*/
|
|
5770
|
-
|
|
5771
|
-
xhr: function() {
|
|
5772
|
-
return new window.XMLHttpRequest();
|
|
5773
|
-
},
|
|
6334
|
+
|
|
5774
6335
|
accepts: {
|
|
5775
6336
|
xml: "application/xml, text/xml",
|
|
5776
6337
|
html: "text/html",
|
|
5777
|
-
script: "text/javascript, application/javascript",
|
|
5778
|
-
json: "application/json, text/javascript",
|
|
5779
6338
|
text: "text/plain",
|
|
5780
|
-
|
|
5781
|
-
|
|
5782
|
-
|
|
6339
|
+
json: "application/json, text/javascript",
|
|
6340
|
+
"*": "*/*"
|
|
6341
|
+
},
|
|
5783
6342
|
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
6343
|
+
contents: {
|
|
6344
|
+
xml: /xml/,
|
|
6345
|
+
html: /html/,
|
|
6346
|
+
json: /json/
|
|
6347
|
+
},
|
|
5787
6348
|
|
|
5788
|
-
|
|
6349
|
+
responseFields: {
|
|
6350
|
+
xml: "responseXML",
|
|
6351
|
+
text: "responseText"
|
|
6352
|
+
},
|
|
5789
6353
|
|
|
5790
|
-
//
|
|
5791
|
-
|
|
6354
|
+
// List of data converters
|
|
6355
|
+
// 1) key format is "source_type destination_type" (a single space in-between)
|
|
6356
|
+
// 2) the catchall symbol "*" can be used for source_type
|
|
6357
|
+
converters: {
|
|
6358
|
+
|
|
6359
|
+
// Convert anything to text
|
|
6360
|
+
"* text": window.String,
|
|
6361
|
+
|
|
6362
|
+
// Text to html (true = no transformation)
|
|
6363
|
+
"text html": true,
|
|
6364
|
+
|
|
6365
|
+
// Evaluate text as a json expression
|
|
6366
|
+
"text json": jQuery.parseJSON,
|
|
6367
|
+
|
|
6368
|
+
// Parse text as xml
|
|
6369
|
+
"text xml": jQuery.parseXML
|
|
6370
|
+
}
|
|
6371
|
+
},
|
|
6372
|
+
|
|
6373
|
+
ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
|
|
6374
|
+
ajaxTransport: addToPrefiltersOrTransports( transports ),
|
|
6375
|
+
|
|
6376
|
+
// Main method
|
|
6377
|
+
ajax: function( url, options ) {
|
|
6378
|
+
|
|
6379
|
+
// If url is an object, simulate pre-1.5 signature
|
|
6380
|
+
if ( typeof url === "object" ) {
|
|
6381
|
+
options = url;
|
|
6382
|
+
url = undefined;
|
|
6383
|
+
}
|
|
6384
|
+
|
|
6385
|
+
// Force options to be an object
|
|
6386
|
+
options = options || {};
|
|
6387
|
+
|
|
6388
|
+
var // Create the final options object
|
|
6389
|
+
s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ),
|
|
6390
|
+
// Callbacks context
|
|
6391
|
+
// We force the original context if it exists
|
|
6392
|
+
// or take it from jQuery.ajaxSettings otherwise
|
|
6393
|
+
// (plain objects used as context get extended)
|
|
6394
|
+
callbackContext =
|
|
6395
|
+
( s.context = ( "context" in options ? options : jQuery.ajaxSettings ).context ) || s,
|
|
6396
|
+
// Context for global events
|
|
6397
|
+
// It's the callbackContext if one was provided in the options
|
|
6398
|
+
// and if it's a DOM node
|
|
6399
|
+
globalEventContext = callbackContext !== s && callbackContext.nodeType ?
|
|
6400
|
+
jQuery( callbackContext ) : jQuery.event,
|
|
6401
|
+
// Deferreds
|
|
6402
|
+
deferred = jQuery.Deferred(),
|
|
6403
|
+
completeDeferred = jQuery._Deferred(),
|
|
6404
|
+
// Status-dependent callbacks
|
|
6405
|
+
statusCode = s.statusCode || {},
|
|
6406
|
+
// ifModified key
|
|
6407
|
+
ifModifiedKey,
|
|
6408
|
+
// Headers (they are sent all at once)
|
|
6409
|
+
requestHeaders = {},
|
|
6410
|
+
// Response headers
|
|
6411
|
+
responseHeadersString,
|
|
6412
|
+
responseHeaders,
|
|
6413
|
+
// transport
|
|
6414
|
+
transport,
|
|
6415
|
+
// timeout handle
|
|
6416
|
+
timeoutTimer,
|
|
6417
|
+
// Cross-domain detection vars
|
|
6418
|
+
parts,
|
|
6419
|
+
// The jqXHR state
|
|
6420
|
+
state = 0,
|
|
6421
|
+
// To know if global events are to be dispatched
|
|
6422
|
+
fireGlobals,
|
|
6423
|
+
// Loop variable
|
|
6424
|
+
i,
|
|
6425
|
+
// Fake xhr
|
|
6426
|
+
jqXHR = {
|
|
6427
|
+
|
|
6428
|
+
readyState: 0,
|
|
6429
|
+
|
|
6430
|
+
// Caches the header
|
|
6431
|
+
setRequestHeader: function( name, value ) {
|
|
6432
|
+
if ( state === 0 ) {
|
|
6433
|
+
requestHeaders[ name.toLowerCase() ] = value;
|
|
6434
|
+
}
|
|
6435
|
+
return this;
|
|
6436
|
+
},
|
|
6437
|
+
|
|
6438
|
+
// Raw string
|
|
6439
|
+
getAllResponseHeaders: function() {
|
|
6440
|
+
return state === 2 ? responseHeadersString : null;
|
|
6441
|
+
},
|
|
6442
|
+
|
|
6443
|
+
// Builds headers hashtable if needed
|
|
6444
|
+
getResponseHeader: function( key ) {
|
|
6445
|
+
var match;
|
|
6446
|
+
if ( state === 2 ) {
|
|
6447
|
+
if ( !responseHeaders ) {
|
|
6448
|
+
responseHeaders = {};
|
|
6449
|
+
while( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
|
6450
|
+
responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
|
|
6451
|
+
}
|
|
6452
|
+
}
|
|
6453
|
+
match = responseHeaders[ key.toLowerCase() ];
|
|
6454
|
+
}
|
|
6455
|
+
return match || null;
|
|
6456
|
+
},
|
|
6457
|
+
|
|
6458
|
+
// Cancel the request
|
|
6459
|
+
abort: function( statusText ) {
|
|
6460
|
+
statusText = statusText || "abort";
|
|
6461
|
+
if ( transport ) {
|
|
6462
|
+
transport.abort( statusText );
|
|
6463
|
+
}
|
|
6464
|
+
done( 0, statusText );
|
|
6465
|
+
return this;
|
|
6466
|
+
}
|
|
6467
|
+
};
|
|
5792
6468
|
|
|
5793
|
-
//
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
6469
|
+
// Callback for when everything is done
|
|
6470
|
+
// It is defined here because jslint complains if it is declared
|
|
6471
|
+
// at the end of the function (which would be more logical and readable)
|
|
6472
|
+
function done( status, statusText, responses, headers) {
|
|
5797
6473
|
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
if ( !jsre.test( s.url ) ) {
|
|
5802
|
-
s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
|
|
5803
|
-
}
|
|
5804
|
-
} else if ( !s.data || !jsre.test(s.data) ) {
|
|
5805
|
-
s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
|
|
6474
|
+
// Called once
|
|
6475
|
+
if ( state === 2 ) {
|
|
6476
|
+
return;
|
|
5806
6477
|
}
|
|
5807
|
-
s.dataType = "json";
|
|
5808
|
-
}
|
|
5809
6478
|
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
jsonp = s.jsonpCallback || ("jsonp" + jsc++);
|
|
6479
|
+
// State is "done" now
|
|
6480
|
+
state = 2;
|
|
5813
6481
|
|
|
5814
|
-
//
|
|
5815
|
-
if (
|
|
5816
|
-
|
|
6482
|
+
// Clear timeout if it exists
|
|
6483
|
+
if ( timeoutTimer ) {
|
|
6484
|
+
clearTimeout( timeoutTimer );
|
|
5817
6485
|
}
|
|
5818
6486
|
|
|
5819
|
-
|
|
6487
|
+
// Dereference transport for early garbage collection
|
|
6488
|
+
// (no matter how long the jqXHR object will be used)
|
|
6489
|
+
transport = undefined;
|
|
5820
6490
|
|
|
5821
|
-
//
|
|
5822
|
-
|
|
5823
|
-
s.dataType = "script";
|
|
6491
|
+
// Cache response headers
|
|
6492
|
+
responseHeadersString = headers || "";
|
|
5824
6493
|
|
|
5825
|
-
//
|
|
5826
|
-
|
|
6494
|
+
// Set readyState
|
|
6495
|
+
jqXHR.readyState = status ? 4 : 0;
|
|
5827
6496
|
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
6497
|
+
var isSuccess,
|
|
6498
|
+
success,
|
|
6499
|
+
error,
|
|
6500
|
+
response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
|
|
6501
|
+
lastModified,
|
|
6502
|
+
etag;
|
|
5831
6503
|
|
|
5832
|
-
|
|
5833
|
-
|
|
5834
|
-
window[ jsonp ] = undefined;
|
|
6504
|
+
// If successful, handle type chaining
|
|
6505
|
+
if ( status >= 200 && status < 300 || status === 304 ) {
|
|
5835
6506
|
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
} catch( jsonpError ) {}
|
|
5839
|
-
}
|
|
6507
|
+
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
|
6508
|
+
if ( s.ifModified ) {
|
|
5840
6509
|
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
6510
|
+
if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
|
|
6511
|
+
jQuery.lastModified[ ifModifiedKey ] = lastModified;
|
|
6512
|
+
}
|
|
6513
|
+
if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
|
|
6514
|
+
jQuery.etag[ ifModifiedKey ] = etag;
|
|
6515
|
+
}
|
|
5847
6516
|
}
|
|
5848
|
-
};
|
|
5849
|
-
}
|
|
5850
|
-
|
|
5851
|
-
if ( s.dataType === "script" && s.cache === null ) {
|
|
5852
|
-
s.cache = false;
|
|
5853
|
-
}
|
|
5854
6517
|
|
|
5855
|
-
|
|
5856
|
-
|
|
6518
|
+
// If not modified
|
|
6519
|
+
if ( status === 304 ) {
|
|
5857
6520
|
|
|
5858
|
-
|
|
5859
|
-
|
|
6521
|
+
statusText = "notmodified";
|
|
6522
|
+
isSuccess = true;
|
|
5860
6523
|
|
|
5861
|
-
|
|
5862
|
-
|
|
5863
|
-
}
|
|
5864
|
-
|
|
5865
|
-
// If data is available, append data to url for GET/HEAD requests
|
|
5866
|
-
if ( s.data && noContent ) {
|
|
5867
|
-
s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
|
|
5868
|
-
}
|
|
5869
|
-
|
|
5870
|
-
// Watch for a new set of requests
|
|
5871
|
-
if ( s.global && jQuery.active++ === 0 ) {
|
|
5872
|
-
jQuery.event.trigger( "ajaxStart" );
|
|
5873
|
-
}
|
|
5874
|
-
|
|
5875
|
-
// Matches an absolute URL, and saves the domain
|
|
5876
|
-
var parts = rurl.exec( s.url ),
|
|
5877
|
-
remote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);
|
|
5878
|
-
|
|
5879
|
-
// If we're requesting a remote document
|
|
5880
|
-
// and trying to load JSON or Script with a GET
|
|
5881
|
-
if ( s.dataType === "script" && type === "GET" && remote ) {
|
|
5882
|
-
var head = document.getElementsByTagName("head")[0] || document.documentElement;
|
|
5883
|
-
var script = document.createElement("script");
|
|
5884
|
-
if ( s.scriptCharset ) {
|
|
5885
|
-
script.charset = s.scriptCharset;
|
|
5886
|
-
}
|
|
5887
|
-
script.src = s.url;
|
|
5888
|
-
|
|
5889
|
-
// Handle Script loading
|
|
5890
|
-
if ( !jsonp ) {
|
|
5891
|
-
var done = false;
|
|
5892
|
-
|
|
5893
|
-
// Attach handlers for all browsers
|
|
5894
|
-
script.onload = script.onreadystatechange = function() {
|
|
5895
|
-
if ( !done && (!this.readyState ||
|
|
5896
|
-
this.readyState === "loaded" || this.readyState === "complete") ) {
|
|
5897
|
-
done = true;
|
|
5898
|
-
jQuery.handleSuccess( s, xhr, status, data );
|
|
5899
|
-
jQuery.handleComplete( s, xhr, status, data );
|
|
6524
|
+
// If we have data
|
|
6525
|
+
} else {
|
|
5900
6526
|
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
6527
|
+
try {
|
|
6528
|
+
success = ajaxConvert( s, response );
|
|
6529
|
+
statusText = "success";
|
|
6530
|
+
isSuccess = true;
|
|
6531
|
+
} catch(e) {
|
|
6532
|
+
// We have a parsererror
|
|
6533
|
+
statusText = "parsererror";
|
|
6534
|
+
error = e;
|
|
5906
6535
|
}
|
|
5907
|
-
}
|
|
6536
|
+
}
|
|
6537
|
+
} else {
|
|
6538
|
+
// We extract error from statusText
|
|
6539
|
+
// then normalize statusText and status for non-aborts
|
|
6540
|
+
error = statusText;
|
|
6541
|
+
if( status ) {
|
|
6542
|
+
statusText = "error";
|
|
6543
|
+
if ( status < 0 ) {
|
|
6544
|
+
status = 0;
|
|
6545
|
+
}
|
|
6546
|
+
}
|
|
5908
6547
|
}
|
|
5909
6548
|
|
|
5910
|
-
//
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
// We handle everything using the script element injection
|
|
5915
|
-
return undefined;
|
|
5916
|
-
}
|
|
6549
|
+
// Set data for the fake xhr object
|
|
6550
|
+
jqXHR.status = status;
|
|
6551
|
+
jqXHR.statusText = statusText;
|
|
5917
6552
|
|
|
5918
|
-
|
|
6553
|
+
// Success/Error
|
|
6554
|
+
if ( isSuccess ) {
|
|
6555
|
+
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
|
|
6556
|
+
} else {
|
|
6557
|
+
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
|
|
6558
|
+
}
|
|
5919
6559
|
|
|
5920
|
-
|
|
5921
|
-
|
|
6560
|
+
// Status-dependent callbacks
|
|
6561
|
+
jqXHR.statusCode( statusCode );
|
|
6562
|
+
statusCode = undefined;
|
|
5922
6563
|
|
|
5923
|
-
|
|
5924
|
-
|
|
5925
|
-
|
|
6564
|
+
if ( fireGlobals ) {
|
|
6565
|
+
globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
|
|
6566
|
+
[ jqXHR, s, isSuccess ? success : error ] );
|
|
6567
|
+
}
|
|
5926
6568
|
|
|
5927
|
-
|
|
5928
|
-
|
|
5929
|
-
if ( s.username ) {
|
|
5930
|
-
xhr.open(type, s.url, s.async, s.username, s.password);
|
|
5931
|
-
} else {
|
|
5932
|
-
xhr.open(type, s.url, s.async);
|
|
5933
|
-
}
|
|
6569
|
+
// Complete
|
|
6570
|
+
completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
|
|
5934
6571
|
|
|
5935
|
-
|
|
5936
|
-
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
6572
|
+
if ( fireGlobals ) {
|
|
6573
|
+
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
|
|
6574
|
+
// Handle the global AJAX counter
|
|
6575
|
+
if ( !( --jQuery.active ) ) {
|
|
6576
|
+
jQuery.event.trigger( "ajaxStop" );
|
|
6577
|
+
}
|
|
5940
6578
|
}
|
|
6579
|
+
}
|
|
5941
6580
|
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
6581
|
+
// Attach deferreds
|
|
6582
|
+
deferred.promise( jqXHR );
|
|
6583
|
+
jqXHR.success = jqXHR.done;
|
|
6584
|
+
jqXHR.error = jqXHR.fail;
|
|
6585
|
+
jqXHR.complete = completeDeferred.done;
|
|
5947
6586
|
|
|
5948
|
-
|
|
5949
|
-
|
|
6587
|
+
// Status-dependent callbacks
|
|
6588
|
+
jqXHR.statusCode = function( map ) {
|
|
6589
|
+
if ( map ) {
|
|
6590
|
+
var tmp;
|
|
6591
|
+
if ( state < 2 ) {
|
|
6592
|
+
for( tmp in map ) {
|
|
6593
|
+
statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
|
|
6594
|
+
}
|
|
6595
|
+
} else {
|
|
6596
|
+
tmp = map[ jqXHR.status ];
|
|
6597
|
+
jqXHR.then( tmp, tmp );
|
|
5950
6598
|
}
|
|
5951
6599
|
}
|
|
6600
|
+
return this;
|
|
6601
|
+
};
|
|
5952
6602
|
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
6603
|
+
// Remove hash character (#7531: and string promotion)
|
|
6604
|
+
// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
|
|
6605
|
+
// We also use the url parameter if available
|
|
6606
|
+
s.url = ( "" + ( url || s.url ) ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
|
6607
|
+
|
|
6608
|
+
// Extract dataTypes list
|
|
6609
|
+
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
|
|
6610
|
+
|
|
6611
|
+
// Determine if a cross-domain request is in order
|
|
6612
|
+
if ( !s.crossDomain ) {
|
|
6613
|
+
parts = rurl.exec( s.url.toLowerCase() );
|
|
6614
|
+
s.crossDomain = !!( parts &&
|
|
6615
|
+
( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
|
|
6616
|
+
( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
|
|
6617
|
+
( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
|
|
6618
|
+
);
|
|
6619
|
+
}
|
|
5958
6620
|
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
} catch( headerError ) {}
|
|
6621
|
+
// Convert data if not already a string
|
|
6622
|
+
if ( s.data && s.processData && typeof s.data !== "string" ) {
|
|
6623
|
+
s.data = jQuery.param( s.data, s.traditional );
|
|
6624
|
+
}
|
|
5964
6625
|
|
|
5965
|
-
//
|
|
5966
|
-
|
|
5967
|
-
// Handle the global AJAX counter
|
|
5968
|
-
if ( s.global && jQuery.active-- === 1 ) {
|
|
5969
|
-
jQuery.event.trigger( "ajaxStop" );
|
|
5970
|
-
}
|
|
6626
|
+
// Apply prefilters
|
|
6627
|
+
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
|
5971
6628
|
|
|
5972
|
-
|
|
5973
|
-
|
|
6629
|
+
// If request was aborted inside a prefiler, stop there
|
|
6630
|
+
if ( state === 2 ) {
|
|
5974
6631
|
return false;
|
|
5975
6632
|
}
|
|
5976
6633
|
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
}
|
|
6634
|
+
// We can fire global events as of now if asked to
|
|
6635
|
+
fireGlobals = s.global;
|
|
5980
6636
|
|
|
5981
|
-
//
|
|
5982
|
-
|
|
5983
|
-
// The request was aborted
|
|
5984
|
-
if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
|
|
5985
|
-
// Opera doesn't call onreadystatechange before this point
|
|
5986
|
-
// so we simulate the call
|
|
5987
|
-
if ( !requestDone ) {
|
|
5988
|
-
jQuery.handleComplete( s, xhr, status, data );
|
|
5989
|
-
}
|
|
6637
|
+
// Uppercase the type
|
|
6638
|
+
s.type = s.type.toUpperCase();
|
|
5990
6639
|
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
xhr.onreadystatechange = jQuery.noop;
|
|
5994
|
-
}
|
|
6640
|
+
// Determine if request has content
|
|
6641
|
+
s.hasContent = !rnoContent.test( s.type );
|
|
5995
6642
|
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
6643
|
+
// Watch for a new set of requests
|
|
6644
|
+
if ( fireGlobals && jQuery.active++ === 0 ) {
|
|
6645
|
+
jQuery.event.trigger( "ajaxStart" );
|
|
6646
|
+
}
|
|
6000
6647
|
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
!jQuery.httpSuccess( xhr ) ?
|
|
6004
|
-
"error" :
|
|
6005
|
-
s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
|
|
6006
|
-
"notmodified" :
|
|
6007
|
-
"success";
|
|
6648
|
+
// More options handling for requests with no content
|
|
6649
|
+
if ( !s.hasContent ) {
|
|
6008
6650
|
|
|
6009
|
-
|
|
6651
|
+
// If data is available, append data to url
|
|
6652
|
+
if ( s.data ) {
|
|
6653
|
+
s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
|
|
6654
|
+
}
|
|
6010
6655
|
|
|
6011
|
-
|
|
6012
|
-
|
|
6013
|
-
try {
|
|
6014
|
-
// process the data (runs the xml through httpData regardless of callback)
|
|
6015
|
-
data = jQuery.httpData( xhr, s.dataType, s );
|
|
6016
|
-
} catch( parserError ) {
|
|
6017
|
-
status = "parsererror";
|
|
6018
|
-
errMsg = parserError;
|
|
6019
|
-
}
|
|
6020
|
-
}
|
|
6656
|
+
// Get ifModifiedKey before adding the anti-cache parameter
|
|
6657
|
+
ifModifiedKey = s.url;
|
|
6021
6658
|
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
// JSONP handles its own success callback
|
|
6025
|
-
if ( !jsonp ) {
|
|
6026
|
-
jQuery.handleSuccess( s, xhr, status, data );
|
|
6027
|
-
}
|
|
6028
|
-
} else {
|
|
6029
|
-
jQuery.handleError( s, xhr, status, errMsg );
|
|
6030
|
-
}
|
|
6031
|
-
|
|
6032
|
-
// Fire the complete handlers
|
|
6033
|
-
if ( !jsonp ) {
|
|
6034
|
-
jQuery.handleComplete( s, xhr, status, data );
|
|
6035
|
-
}
|
|
6659
|
+
// Add anti-cache in url if needed
|
|
6660
|
+
if ( s.cache === false ) {
|
|
6036
6661
|
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6662
|
+
var ts = jQuery.now(),
|
|
6663
|
+
// try replacing _= if it is there
|
|
6664
|
+
ret = s.url.replace( rts, "$1_=" + ts );
|
|
6040
6665
|
|
|
6041
|
-
//
|
|
6042
|
-
|
|
6043
|
-
xhr = null;
|
|
6044
|
-
}
|
|
6666
|
+
// if nothing was replaced, add timestamp to the end
|
|
6667
|
+
s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
|
|
6045
6668
|
}
|
|
6046
|
-
}
|
|
6669
|
+
}
|
|
6047
6670
|
|
|
6048
|
-
//
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
xhr.abort = function() {
|
|
6053
|
-
if ( xhr ) {
|
|
6054
|
-
// oldAbort has no call property in IE7 so
|
|
6055
|
-
// just do it this way, which works in all
|
|
6056
|
-
// browsers
|
|
6057
|
-
Function.prototype.call.call( oldAbort, xhr );
|
|
6058
|
-
}
|
|
6671
|
+
// Set the correct header, if data is being sent
|
|
6672
|
+
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
|
|
6673
|
+
requestHeaders[ "content-type" ] = s.contentType;
|
|
6674
|
+
}
|
|
6059
6675
|
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6676
|
+
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
|
6677
|
+
if ( s.ifModified ) {
|
|
6678
|
+
ifModifiedKey = ifModifiedKey || s.url;
|
|
6679
|
+
if ( jQuery.lastModified[ ifModifiedKey ] ) {
|
|
6680
|
+
requestHeaders[ "if-modified-since" ] = jQuery.lastModified[ ifModifiedKey ];
|
|
6681
|
+
}
|
|
6682
|
+
if ( jQuery.etag[ ifModifiedKey ] ) {
|
|
6683
|
+
requestHeaders[ "if-none-match" ] = jQuery.etag[ ifModifiedKey ];
|
|
6684
|
+
}
|
|
6685
|
+
}
|
|
6063
6686
|
|
|
6064
|
-
//
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6687
|
+
// Set the Accepts header for the server, depending on the dataType
|
|
6688
|
+
requestHeaders.accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
|
|
6689
|
+
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
|
|
6690
|
+
s.accepts[ "*" ];
|
|
6691
|
+
|
|
6692
|
+
// Check for headers option
|
|
6693
|
+
for ( i in s.headers ) {
|
|
6694
|
+
requestHeaders[ i.toLowerCase() ] = s.headers[ i ];
|
|
6072
6695
|
}
|
|
6073
6696
|
|
|
6074
|
-
//
|
|
6075
|
-
|
|
6076
|
-
|
|
6697
|
+
// Allow custom headers/mimetypes and early abort
|
|
6698
|
+
if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
|
|
6699
|
+
// Abort if not done already
|
|
6700
|
+
jqXHR.abort();
|
|
6701
|
+
return false;
|
|
6077
6702
|
|
|
6078
|
-
}
|
|
6079
|
-
jQuery.handleError( s, xhr, null, sendError );
|
|
6703
|
+
}
|
|
6080
6704
|
|
|
6081
|
-
|
|
6082
|
-
|
|
6705
|
+
// Install callbacks on deferreds
|
|
6706
|
+
for ( i in { success: 1, error: 1, complete: 1 } ) {
|
|
6707
|
+
jqXHR[ i ]( s[ i ] );
|
|
6083
6708
|
}
|
|
6084
6709
|
|
|
6085
|
-
//
|
|
6086
|
-
|
|
6087
|
-
|
|
6710
|
+
// Get transport
|
|
6711
|
+
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
|
6712
|
+
|
|
6713
|
+
// If no transport, we auto-abort
|
|
6714
|
+
if ( !transport ) {
|
|
6715
|
+
done( -1, "No Transport" );
|
|
6716
|
+
} else {
|
|
6717
|
+
// Set state as sending
|
|
6718
|
+
state = jqXHR.readyState = 1;
|
|
6719
|
+
// Send global event
|
|
6720
|
+
if ( fireGlobals ) {
|
|
6721
|
+
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
|
|
6722
|
+
}
|
|
6723
|
+
// Timeout
|
|
6724
|
+
if ( s.async && s.timeout > 0 ) {
|
|
6725
|
+
timeoutTimer = setTimeout( function(){
|
|
6726
|
+
jqXHR.abort( "timeout" );
|
|
6727
|
+
}, s.timeout );
|
|
6728
|
+
}
|
|
6729
|
+
|
|
6730
|
+
try {
|
|
6731
|
+
transport.send( requestHeaders, done );
|
|
6732
|
+
} catch (e) {
|
|
6733
|
+
// Propagate exception as error if not done
|
|
6734
|
+
if ( status < 2 ) {
|
|
6735
|
+
done( -1, e );
|
|
6736
|
+
// Simply rethrow otherwise
|
|
6737
|
+
} else {
|
|
6738
|
+
jQuery.error( e );
|
|
6739
|
+
}
|
|
6740
|
+
}
|
|
6088
6741
|
}
|
|
6089
6742
|
|
|
6090
|
-
|
|
6091
|
-
return xhr;
|
|
6743
|
+
return jqXHR;
|
|
6092
6744
|
},
|
|
6093
6745
|
|
|
6094
6746
|
// Serialize an array of form elements or a set of
|
|
@@ -6097,37 +6749,37 @@ jQuery.extend({
|
|
|
6097
6749
|
var s = [],
|
|
6098
6750
|
add = function( key, value ) {
|
|
6099
6751
|
// If value is a function, invoke it and return its value
|
|
6100
|
-
value = jQuery.isFunction(value) ? value() : value;
|
|
6101
|
-
s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
6752
|
+
value = jQuery.isFunction( value ) ? value() : value;
|
|
6753
|
+
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
|
|
6102
6754
|
};
|
|
6103
|
-
|
|
6755
|
+
|
|
6104
6756
|
// Set traditional to true for jQuery <= 1.3.2 behavior.
|
|
6105
6757
|
if ( traditional === undefined ) {
|
|
6106
6758
|
traditional = jQuery.ajaxSettings.traditional;
|
|
6107
6759
|
}
|
|
6108
|
-
|
|
6760
|
+
|
|
6109
6761
|
// If an array was passed in, assume that it is an array of form elements.
|
|
6110
|
-
if ( jQuery.isArray(a) || a.jquery ) {
|
|
6762
|
+
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
|
6111
6763
|
// Serialize the form elements
|
|
6112
6764
|
jQuery.each( a, function() {
|
|
6113
6765
|
add( this.name, this.value );
|
|
6114
|
-
});
|
|
6115
|
-
|
|
6766
|
+
} );
|
|
6767
|
+
|
|
6116
6768
|
} else {
|
|
6117
6769
|
// If traditional, encode the "old" way (the way 1.3.2 or older
|
|
6118
6770
|
// did it), otherwise encode params recursively.
|
|
6119
6771
|
for ( var prefix in a ) {
|
|
6120
|
-
buildParams( prefix, a[prefix], traditional, add );
|
|
6772
|
+
buildParams( prefix, a[ prefix ], traditional, add );
|
|
6121
6773
|
}
|
|
6122
6774
|
}
|
|
6123
6775
|
|
|
6124
6776
|
// Return the resulting serialization
|
|
6125
|
-
return s.join("&").replace(r20, "+");
|
|
6777
|
+
return s.join( "&" ).replace( r20, "+" );
|
|
6126
6778
|
}
|
|
6127
6779
|
});
|
|
6128
6780
|
|
|
6129
6781
|
function buildParams( prefix, obj, traditional, add ) {
|
|
6130
|
-
if ( jQuery.isArray(obj) && obj.length ) {
|
|
6782
|
+
if ( jQuery.isArray( obj ) && obj.length ) {
|
|
6131
6783
|
// Serialize array item.
|
|
6132
6784
|
jQuery.each( obj, function( i, v ) {
|
|
6133
6785
|
if ( traditional || rbracket.test( prefix ) ) {
|
|
@@ -6145,18 +6797,20 @@ function buildParams( prefix, obj, traditional, add ) {
|
|
|
6145
6797
|
buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
|
|
6146
6798
|
}
|
|
6147
6799
|
});
|
|
6148
|
-
|
|
6800
|
+
|
|
6149
6801
|
} else if ( !traditional && obj != null && typeof obj === "object" ) {
|
|
6150
|
-
|
|
6802
|
+
// If we see an array here, it is empty and should be treated as an empty
|
|
6803
|
+
// object
|
|
6804
|
+
if ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {
|
|
6151
6805
|
add( prefix, "" );
|
|
6152
6806
|
|
|
6153
6807
|
// Serialize object item.
|
|
6154
6808
|
} else {
|
|
6155
|
-
|
|
6156
|
-
buildParams( prefix + "[" +
|
|
6157
|
-
}
|
|
6809
|
+
for ( var name in obj ) {
|
|
6810
|
+
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
|
6811
|
+
}
|
|
6158
6812
|
}
|
|
6159
|
-
|
|
6813
|
+
|
|
6160
6814
|
} else {
|
|
6161
6815
|
// Serialize scalar item.
|
|
6162
6816
|
add( prefix, obj );
|
|
@@ -6172,136 +6826,582 @@ jQuery.extend({
|
|
|
6172
6826
|
|
|
6173
6827
|
// Last-Modified header cache for next request
|
|
6174
6828
|
lastModified: {},
|
|
6175
|
-
etag: {}
|
|
6829
|
+
etag: {}
|
|
6176
6830
|
|
|
6177
|
-
|
|
6178
|
-
// If a local callback was specified, fire it
|
|
6179
|
-
if ( s.error ) {
|
|
6180
|
-
s.error.call( s.context, xhr, status, e );
|
|
6181
|
-
}
|
|
6831
|
+
});
|
|
6182
6832
|
|
|
6183
|
-
|
|
6184
|
-
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6833
|
+
/* Handles responses to an ajax request:
|
|
6834
|
+
* - sets all responseXXX fields accordingly
|
|
6835
|
+
* - finds the right dataType (mediates between content-type and expected dataType)
|
|
6836
|
+
* - returns the corresponding response
|
|
6837
|
+
*/
|
|
6838
|
+
function ajaxHandleResponses( s, jqXHR, responses ) {
|
|
6188
6839
|
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
|
|
6192
|
-
|
|
6193
|
-
|
|
6840
|
+
var contents = s.contents,
|
|
6841
|
+
dataTypes = s.dataTypes,
|
|
6842
|
+
responseFields = s.responseFields,
|
|
6843
|
+
ct,
|
|
6844
|
+
type,
|
|
6845
|
+
finalDataType,
|
|
6846
|
+
firstDataType;
|
|
6194
6847
|
|
|
6195
|
-
|
|
6196
|
-
|
|
6197
|
-
|
|
6848
|
+
// Fill responseXXX fields
|
|
6849
|
+
for( type in responseFields ) {
|
|
6850
|
+
if ( type in responses ) {
|
|
6851
|
+
jqXHR[ responseFields[type] ] = responses[ type ];
|
|
6198
6852
|
}
|
|
6199
|
-
}
|
|
6853
|
+
}
|
|
6200
6854
|
|
|
6201
|
-
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
|
|
6855
|
+
// Remove auto dataType and get content-type in the process
|
|
6856
|
+
while( dataTypes[ 0 ] === "*" ) {
|
|
6857
|
+
dataTypes.shift();
|
|
6858
|
+
if ( ct === undefined ) {
|
|
6859
|
+
ct = jqXHR.getResponseHeader( "content-type" );
|
|
6205
6860
|
}
|
|
6861
|
+
}
|
|
6206
6862
|
|
|
6207
|
-
|
|
6208
|
-
|
|
6209
|
-
|
|
6863
|
+
// Check if we're dealing with a known content-type
|
|
6864
|
+
if ( ct ) {
|
|
6865
|
+
for ( type in contents ) {
|
|
6866
|
+
if ( contents[ type ] && contents[ type ].test( ct ) ) {
|
|
6867
|
+
dataTypes.unshift( type );
|
|
6868
|
+
break;
|
|
6869
|
+
}
|
|
6210
6870
|
}
|
|
6871
|
+
}
|
|
6211
6872
|
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6873
|
+
// Check to see if we have a response for the expected dataType
|
|
6874
|
+
if ( dataTypes[ 0 ] in responses ) {
|
|
6875
|
+
finalDataType = dataTypes[ 0 ];
|
|
6876
|
+
} else {
|
|
6877
|
+
// Try convertible dataTypes
|
|
6878
|
+
for ( type in responses ) {
|
|
6879
|
+
if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
|
|
6880
|
+
finalDataType = type;
|
|
6881
|
+
break;
|
|
6882
|
+
}
|
|
6883
|
+
if ( !firstDataType ) {
|
|
6884
|
+
firstDataType = type;
|
|
6885
|
+
}
|
|
6215
6886
|
}
|
|
6216
|
-
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
(s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);
|
|
6220
|
-
},
|
|
6887
|
+
// Or just use first one
|
|
6888
|
+
finalDataType = finalDataType || firstDataType;
|
|
6889
|
+
}
|
|
6221
6890
|
|
|
6222
|
-
//
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
|
|
6229
|
-
|
|
6891
|
+
// If we found a dataType
|
|
6892
|
+
// We add the dataType to the list if needed
|
|
6893
|
+
// and return the corresponding response
|
|
6894
|
+
if ( finalDataType ) {
|
|
6895
|
+
if ( finalDataType !== dataTypes[ 0 ] ) {
|
|
6896
|
+
dataTypes.unshift( finalDataType );
|
|
6897
|
+
}
|
|
6898
|
+
return responses[ finalDataType ];
|
|
6899
|
+
}
|
|
6900
|
+
}
|
|
6230
6901
|
|
|
6231
|
-
|
|
6232
|
-
|
|
6902
|
+
// Chain conversions given the request and the original response
|
|
6903
|
+
function ajaxConvert( s, response ) {
|
|
6233
6904
|
|
|
6234
|
-
//
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6905
|
+
// Apply the dataFilter if provided
|
|
6906
|
+
if ( s.dataFilter ) {
|
|
6907
|
+
response = s.dataFilter( response, s.dataType );
|
|
6908
|
+
}
|
|
6238
6909
|
|
|
6239
|
-
|
|
6240
|
-
|
|
6910
|
+
var dataTypes = s.dataTypes,
|
|
6911
|
+
converters = {},
|
|
6912
|
+
i,
|
|
6913
|
+
key,
|
|
6914
|
+
length = dataTypes.length,
|
|
6915
|
+
tmp,
|
|
6916
|
+
// Current and previous dataTypes
|
|
6917
|
+
current = dataTypes[ 0 ],
|
|
6918
|
+
prev,
|
|
6919
|
+
// Conversion expression
|
|
6920
|
+
conversion,
|
|
6921
|
+
// Conversion function
|
|
6922
|
+
conv,
|
|
6923
|
+
// Conversion functions (transitive conversion)
|
|
6924
|
+
conv1,
|
|
6925
|
+
conv2;
|
|
6926
|
+
|
|
6927
|
+
// For each dataType in the chain
|
|
6928
|
+
for( i = 1; i < length; i++ ) {
|
|
6929
|
+
|
|
6930
|
+
// Create converters map
|
|
6931
|
+
// with lowercased keys
|
|
6932
|
+
if ( i === 1 ) {
|
|
6933
|
+
for( key in s.converters ) {
|
|
6934
|
+
if( typeof key === "string" ) {
|
|
6935
|
+
converters[ key.toLowerCase() ] = s.converters[ key ];
|
|
6936
|
+
}
|
|
6937
|
+
}
|
|
6241
6938
|
}
|
|
6242
6939
|
|
|
6243
|
-
|
|
6244
|
-
|
|
6940
|
+
// Get the dataTypes
|
|
6941
|
+
prev = current;
|
|
6942
|
+
current = dataTypes[ i ];
|
|
6943
|
+
|
|
6944
|
+
// If current is auto dataType, update it to prev
|
|
6945
|
+
if( current === "*" ) {
|
|
6946
|
+
current = prev;
|
|
6947
|
+
// If no auto and dataTypes are actually different
|
|
6948
|
+
} else if ( prev !== "*" && prev !== current ) {
|
|
6949
|
+
|
|
6950
|
+
// Get the converter
|
|
6951
|
+
conversion = prev + " " + current;
|
|
6952
|
+
conv = converters[ conversion ] || converters[ "* " + current ];
|
|
6953
|
+
|
|
6954
|
+
// If there is no direct converter, search transitively
|
|
6955
|
+
if ( !conv ) {
|
|
6956
|
+
conv2 = undefined;
|
|
6957
|
+
for( conv1 in converters ) {
|
|
6958
|
+
tmp = conv1.split( " " );
|
|
6959
|
+
if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
|
|
6960
|
+
conv2 = converters[ tmp[1] + " " + current ];
|
|
6961
|
+
if ( conv2 ) {
|
|
6962
|
+
conv1 = converters[ conv1 ];
|
|
6963
|
+
if ( conv1 === true ) {
|
|
6964
|
+
conv = conv2;
|
|
6965
|
+
} else if ( conv2 === true ) {
|
|
6966
|
+
conv = conv1;
|
|
6967
|
+
}
|
|
6968
|
+
break;
|
|
6969
|
+
}
|
|
6970
|
+
}
|
|
6971
|
+
}
|
|
6972
|
+
}
|
|
6973
|
+
// If we found no converter, dispatch an error
|
|
6974
|
+
if ( !( conv || conv2 ) ) {
|
|
6975
|
+
jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
|
|
6976
|
+
}
|
|
6977
|
+
// If found converter is not an equivalence
|
|
6978
|
+
if ( conv !== true ) {
|
|
6979
|
+
// Convert with 1 or 2 converters accordingly
|
|
6980
|
+
response = conv ? conv( response ) : conv2( conv1(response) );
|
|
6981
|
+
}
|
|
6245
6982
|
}
|
|
6983
|
+
}
|
|
6984
|
+
return response;
|
|
6985
|
+
}
|
|
6246
6986
|
|
|
6247
|
-
|
|
6248
|
-
},
|
|
6987
|
+
})( jQuery );
|
|
6249
6988
|
|
|
6250
|
-
httpData: function( xhr, type, s ) {
|
|
6251
|
-
var ct = xhr.getResponseHeader("content-type") || "",
|
|
6252
|
-
xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
|
|
6253
|
-
data = xml ? xhr.responseXML : xhr.responseText;
|
|
6254
6989
|
|
|
6255
|
-
|
|
6256
|
-
jQuery.error( "parsererror" );
|
|
6257
|
-
}
|
|
6990
|
+
(function( jQuery ) {
|
|
6258
6991
|
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
if ( s && s.dataFilter ) {
|
|
6262
|
-
data = s.dataFilter( data, type );
|
|
6263
|
-
}
|
|
6992
|
+
var jsc = jQuery.now(),
|
|
6993
|
+
jsre = /(\=)\?(&|$)|()\?\?()/i;
|
|
6264
6994
|
|
|
6265
|
-
|
|
6266
|
-
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
|
|
6995
|
+
// Default jsonp settings
|
|
6996
|
+
jQuery.ajaxSetup({
|
|
6997
|
+
jsonp: "callback",
|
|
6998
|
+
jsonpCallback: function() {
|
|
6999
|
+
return jQuery.expando + "_" + ( jsc++ );
|
|
7000
|
+
}
|
|
7001
|
+
});
|
|
7002
|
+
|
|
7003
|
+
// Detect, normalize options and install callbacks for jsonp requests
|
|
7004
|
+
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
|
|
7005
|
+
|
|
7006
|
+
var dataIsString = ( typeof s.data === "string" );
|
|
7007
|
+
|
|
7008
|
+
if ( s.dataTypes[ 0 ] === "jsonp" ||
|
|
7009
|
+
originalSettings.jsonpCallback ||
|
|
7010
|
+
originalSettings.jsonp != null ||
|
|
7011
|
+
s.jsonp !== false && ( jsre.test( s.url ) ||
|
|
7012
|
+
dataIsString && jsre.test( s.data ) ) ) {
|
|
7013
|
+
|
|
7014
|
+
var responseContainer,
|
|
7015
|
+
jsonpCallback = s.jsonpCallback =
|
|
7016
|
+
jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
|
|
7017
|
+
previous = window[ jsonpCallback ],
|
|
7018
|
+
url = s.url,
|
|
7019
|
+
data = s.data,
|
|
7020
|
+
replace = "$1" + jsonpCallback + "$2",
|
|
7021
|
+
cleanUp = function() {
|
|
7022
|
+
// Set callback back to previous value
|
|
7023
|
+
window[ jsonpCallback ] = previous;
|
|
7024
|
+
// Call if it was a function and we have a response
|
|
7025
|
+
if ( responseContainer && jQuery.isFunction( previous ) ) {
|
|
7026
|
+
window[ jsonpCallback ]( responseContainer[ 0 ] );
|
|
7027
|
+
}
|
|
7028
|
+
};
|
|
6270
7029
|
|
|
6271
|
-
|
|
6272
|
-
|
|
6273
|
-
|
|
7030
|
+
if ( s.jsonp !== false ) {
|
|
7031
|
+
url = url.replace( jsre, replace );
|
|
7032
|
+
if ( s.url === url ) {
|
|
7033
|
+
if ( dataIsString ) {
|
|
7034
|
+
data = data.replace( jsre, replace );
|
|
7035
|
+
}
|
|
7036
|
+
if ( s.data === data ) {
|
|
7037
|
+
// Add callback manually
|
|
7038
|
+
url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
|
|
7039
|
+
}
|
|
6274
7040
|
}
|
|
6275
7041
|
}
|
|
6276
7042
|
|
|
6277
|
-
|
|
7043
|
+
s.url = url;
|
|
7044
|
+
s.data = data;
|
|
7045
|
+
|
|
7046
|
+
// Install callback
|
|
7047
|
+
window[ jsonpCallback ] = function( response ) {
|
|
7048
|
+
responseContainer = [ response ];
|
|
7049
|
+
};
|
|
7050
|
+
|
|
7051
|
+
// Install cleanUp function
|
|
7052
|
+
jqXHR.then( cleanUp, cleanUp );
|
|
7053
|
+
|
|
7054
|
+
// Use data converter to retrieve json after script execution
|
|
7055
|
+
s.converters["script json"] = function() {
|
|
7056
|
+
if ( !responseContainer ) {
|
|
7057
|
+
jQuery.error( jsonpCallback + " was not called" );
|
|
7058
|
+
}
|
|
7059
|
+
return responseContainer[ 0 ];
|
|
7060
|
+
};
|
|
7061
|
+
|
|
7062
|
+
// force json dataType
|
|
7063
|
+
s.dataTypes[ 0 ] = "json";
|
|
7064
|
+
|
|
7065
|
+
// Delegate to script
|
|
7066
|
+
return "script";
|
|
6278
7067
|
}
|
|
7068
|
+
} );
|
|
6279
7069
|
|
|
6280
|
-
});
|
|
7070
|
+
})( jQuery );
|
|
6281
7071
|
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
7072
|
+
|
|
7073
|
+
(function( jQuery ) {
|
|
7074
|
+
|
|
7075
|
+
// Install script dataType
|
|
7076
|
+
jQuery.ajaxSetup({
|
|
7077
|
+
accepts: {
|
|
7078
|
+
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
|
7079
|
+
},
|
|
7080
|
+
contents: {
|
|
7081
|
+
script: /javascript|ecmascript/
|
|
7082
|
+
},
|
|
7083
|
+
converters: {
|
|
7084
|
+
"text script": function( text ) {
|
|
7085
|
+
jQuery.globalEval( text );
|
|
7086
|
+
return text;
|
|
6295
7087
|
}
|
|
7088
|
+
}
|
|
7089
|
+
});
|
|
6296
7090
|
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
7091
|
+
// Handle cache's special case and global
|
|
7092
|
+
jQuery.ajaxPrefilter( "script", function( s ) {
|
|
7093
|
+
if ( s.cache === undefined ) {
|
|
7094
|
+
s.cache = false;
|
|
7095
|
+
}
|
|
7096
|
+
if ( s.crossDomain ) {
|
|
7097
|
+
s.type = "GET";
|
|
7098
|
+
s.global = false;
|
|
7099
|
+
}
|
|
7100
|
+
} );
|
|
7101
|
+
|
|
7102
|
+
// Bind script tag hack transport
|
|
7103
|
+
jQuery.ajaxTransport( "script", function(s) {
|
|
7104
|
+
|
|
7105
|
+
// This transport only deals with cross domain requests
|
|
7106
|
+
if ( s.crossDomain ) {
|
|
7107
|
+
|
|
7108
|
+
var script,
|
|
7109
|
+
head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
|
|
7110
|
+
|
|
7111
|
+
return {
|
|
7112
|
+
|
|
7113
|
+
send: function( _, callback ) {
|
|
7114
|
+
|
|
7115
|
+
script = document.createElement( "script" );
|
|
7116
|
+
|
|
7117
|
+
script.async = "async";
|
|
7118
|
+
|
|
7119
|
+
if ( s.scriptCharset ) {
|
|
7120
|
+
script.charset = s.scriptCharset;
|
|
7121
|
+
}
|
|
7122
|
+
|
|
7123
|
+
script.src = s.url;
|
|
7124
|
+
|
|
7125
|
+
// Attach handlers for all browsers
|
|
7126
|
+
script.onload = script.onreadystatechange = function( _, isAbort ) {
|
|
7127
|
+
|
|
7128
|
+
if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
|
|
7129
|
+
|
|
7130
|
+
// Handle memory leak in IE
|
|
7131
|
+
script.onload = script.onreadystatechange = null;
|
|
7132
|
+
|
|
7133
|
+
// Remove the script
|
|
7134
|
+
if ( head && script.parentNode ) {
|
|
7135
|
+
head.removeChild( script );
|
|
7136
|
+
}
|
|
7137
|
+
|
|
7138
|
+
// Dereference the script
|
|
7139
|
+
script = undefined;
|
|
7140
|
+
|
|
7141
|
+
// Callback if not abort
|
|
7142
|
+
if ( !isAbort ) {
|
|
7143
|
+
callback( 200, "success" );
|
|
7144
|
+
}
|
|
7145
|
+
}
|
|
7146
|
+
};
|
|
7147
|
+
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
|
|
7148
|
+
// This arises when a base node is used (#2709 and #4378).
|
|
7149
|
+
head.insertBefore( script, head.firstChild );
|
|
7150
|
+
},
|
|
7151
|
+
|
|
7152
|
+
abort: function() {
|
|
7153
|
+
if ( script ) {
|
|
7154
|
+
script.onload( 0, 1 );
|
|
7155
|
+
}
|
|
7156
|
+
}
|
|
7157
|
+
};
|
|
7158
|
+
}
|
|
7159
|
+
} );
|
|
7160
|
+
|
|
7161
|
+
})( jQuery );
|
|
7162
|
+
|
|
7163
|
+
|
|
7164
|
+
(function( jQuery ) {
|
|
7165
|
+
|
|
7166
|
+
// Functions to create xhrs
|
|
7167
|
+
function createStandardXHR() {
|
|
7168
|
+
try {
|
|
7169
|
+
return new window.XMLHttpRequest();
|
|
7170
|
+
} catch( e ) {}
|
|
6301
7171
|
}
|
|
6302
7172
|
|
|
6303
|
-
|
|
6304
|
-
|
|
7173
|
+
function createActiveXHR() {
|
|
7174
|
+
try {
|
|
7175
|
+
return new window.ActiveXObject("Microsoft.XMLHTTP");
|
|
7176
|
+
} catch( e ) {}
|
|
7177
|
+
}
|
|
7178
|
+
|
|
7179
|
+
var // Next active xhr id
|
|
7180
|
+
xhrId = jQuery.now(),
|
|
7181
|
+
|
|
7182
|
+
// active xhrs
|
|
7183
|
+
xhrs = {},
|
|
7184
|
+
|
|
7185
|
+
// #5280: see below
|
|
7186
|
+
xhrUnloadAbortInstalled,
|
|
7187
|
+
|
|
7188
|
+
// XHR used to determine supports properties
|
|
7189
|
+
testXHR;
|
|
7190
|
+
|
|
7191
|
+
// Create the request object
|
|
7192
|
+
// (This is still attached to ajaxSettings for backward compatibility)
|
|
7193
|
+
jQuery.ajaxSettings.xhr = window.ActiveXObject ?
|
|
7194
|
+
/* Microsoft failed to properly
|
|
7195
|
+
* implement the XMLHttpRequest in IE7 (can't request local files),
|
|
7196
|
+
* so we use the ActiveXObject when it is available
|
|
7197
|
+
* Additionally XMLHttpRequest can be disabled in IE7/IE8 so
|
|
7198
|
+
* we need a fallback.
|
|
7199
|
+
*/
|
|
7200
|
+
function() {
|
|
7201
|
+
return !this.isLocal && createStandardXHR() || createActiveXHR();
|
|
7202
|
+
} :
|
|
7203
|
+
// For all other browsers, use the standard XMLHttpRequest object
|
|
7204
|
+
createStandardXHR;
|
|
7205
|
+
|
|
7206
|
+
// Test if we can create an xhr object
|
|
7207
|
+
testXHR = jQuery.ajaxSettings.xhr();
|
|
7208
|
+
jQuery.support.ajax = !!testXHR;
|
|
7209
|
+
|
|
7210
|
+
// Does this browser support crossDomain XHR requests
|
|
7211
|
+
jQuery.support.cors = testXHR && ( "withCredentials" in testXHR );
|
|
7212
|
+
|
|
7213
|
+
// No need for the temporary xhr anymore
|
|
7214
|
+
testXHR = undefined;
|
|
7215
|
+
|
|
7216
|
+
// Create transport if the browser can provide an xhr
|
|
7217
|
+
if ( jQuery.support.ajax ) {
|
|
7218
|
+
|
|
7219
|
+
jQuery.ajaxTransport(function( s ) {
|
|
7220
|
+
// Cross domain only allowed if supported through XMLHttpRequest
|
|
7221
|
+
if ( !s.crossDomain || jQuery.support.cors ) {
|
|
7222
|
+
|
|
7223
|
+
var callback;
|
|
7224
|
+
|
|
7225
|
+
return {
|
|
7226
|
+
send: function( headers, complete ) {
|
|
7227
|
+
|
|
7228
|
+
// #5280: we need to abort on unload or IE will keep connections alive
|
|
7229
|
+
if ( !xhrUnloadAbortInstalled ) {
|
|
7230
|
+
|
|
7231
|
+
xhrUnloadAbortInstalled = 1;
|
|
7232
|
+
|
|
7233
|
+
jQuery(window).bind( "unload", function() {
|
|
7234
|
+
|
|
7235
|
+
// Abort all pending requests
|
|
7236
|
+
jQuery.each( xhrs, function( _, xhr ) {
|
|
7237
|
+
if ( xhr.onreadystatechange ) {
|
|
7238
|
+
xhr.onreadystatechange( 1 );
|
|
7239
|
+
}
|
|
7240
|
+
} );
|
|
7241
|
+
|
|
7242
|
+
} );
|
|
7243
|
+
}
|
|
7244
|
+
|
|
7245
|
+
// Get a new xhr
|
|
7246
|
+
var xhr = s.xhr(),
|
|
7247
|
+
handle,
|
|
7248
|
+
i;
|
|
7249
|
+
|
|
7250
|
+
// Open the socket
|
|
7251
|
+
// Passing null username, generates a login popup on Opera (#2865)
|
|
7252
|
+
if ( s.username ) {
|
|
7253
|
+
xhr.open( s.type, s.url, s.async, s.username, s.password );
|
|
7254
|
+
} else {
|
|
7255
|
+
xhr.open( s.type, s.url, s.async );
|
|
7256
|
+
}
|
|
7257
|
+
|
|
7258
|
+
// Apply custom fields if provided
|
|
7259
|
+
if ( s.xhrFields ) {
|
|
7260
|
+
for ( i in s.xhrFields ) {
|
|
7261
|
+
xhr[ i ] = s.xhrFields[ i ];
|
|
7262
|
+
}
|
|
7263
|
+
}
|
|
7264
|
+
|
|
7265
|
+
// Requested-With header
|
|
7266
|
+
// Not set for crossDomain requests with no content
|
|
7267
|
+
// (see why at http://trac.dojotoolkit.org/ticket/9486)
|
|
7268
|
+
// Won't change header if already provided
|
|
7269
|
+
if ( !( s.crossDomain && !s.hasContent ) && !headers["x-requested-with"] ) {
|
|
7270
|
+
headers[ "x-requested-with" ] = "XMLHttpRequest";
|
|
7271
|
+
}
|
|
7272
|
+
|
|
7273
|
+
// Need an extra try/catch for cross domain requests in Firefox 3
|
|
7274
|
+
try {
|
|
7275
|
+
jQuery.each( headers, function( key, value ) {
|
|
7276
|
+
xhr.setRequestHeader( key, value );
|
|
7277
|
+
} );
|
|
7278
|
+
} catch( _ ) {}
|
|
7279
|
+
|
|
7280
|
+
// Do send the request
|
|
7281
|
+
// This may raise an exception which is actually
|
|
7282
|
+
// handled in jQuery.ajax (so no try/catch here)
|
|
7283
|
+
xhr.send( ( s.hasContent && s.data ) || null );
|
|
7284
|
+
|
|
7285
|
+
// Listener
|
|
7286
|
+
callback = function( _, isAbort ) {
|
|
7287
|
+
|
|
7288
|
+
var status,
|
|
7289
|
+
statusText,
|
|
7290
|
+
responseHeaders,
|
|
7291
|
+
responses,
|
|
7292
|
+
xml;
|
|
7293
|
+
|
|
7294
|
+
// Firefox throws exceptions when accessing properties
|
|
7295
|
+
// of an xhr when a network error occured
|
|
7296
|
+
// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
|
|
7297
|
+
try {
|
|
7298
|
+
|
|
7299
|
+
// Was never called and is aborted or complete
|
|
7300
|
+
if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
|
|
7301
|
+
|
|
7302
|
+
// Only called once
|
|
7303
|
+
callback = undefined;
|
|
7304
|
+
|
|
7305
|
+
// Do not keep as active anymore
|
|
7306
|
+
if ( handle ) {
|
|
7307
|
+
xhr.onreadystatechange = jQuery.noop;
|
|
7308
|
+
delete xhrs[ handle ];
|
|
7309
|
+
}
|
|
7310
|
+
|
|
7311
|
+
// If it's an abort
|
|
7312
|
+
if ( isAbort ) {
|
|
7313
|
+
// Abort it manually if needed
|
|
7314
|
+
if ( xhr.readyState !== 4 ) {
|
|
7315
|
+
xhr.abort();
|
|
7316
|
+
}
|
|
7317
|
+
} else {
|
|
7318
|
+
// Get info
|
|
7319
|
+
status = xhr.status;
|
|
7320
|
+
responseHeaders = xhr.getAllResponseHeaders();
|
|
7321
|
+
responses = {};
|
|
7322
|
+
xml = xhr.responseXML;
|
|
7323
|
+
|
|
7324
|
+
// Construct response list
|
|
7325
|
+
if ( xml && xml.documentElement /* #4958 */ ) {
|
|
7326
|
+
responses.xml = xml;
|
|
7327
|
+
}
|
|
7328
|
+
responses.text = xhr.responseText;
|
|
7329
|
+
|
|
7330
|
+
// Firefox throws an exception when accessing
|
|
7331
|
+
// statusText for faulty cross-domain requests
|
|
7332
|
+
try {
|
|
7333
|
+
statusText = xhr.statusText;
|
|
7334
|
+
} catch( e ) {
|
|
7335
|
+
// We normalize with Webkit giving an empty statusText
|
|
7336
|
+
statusText = "";
|
|
7337
|
+
}
|
|
7338
|
+
|
|
7339
|
+
// Filter status for non standard behaviors
|
|
7340
|
+
|
|
7341
|
+
// IE - #1450: sometimes returns 1223 when it should be 204
|
|
7342
|
+
if ( status === 1223 ) {
|
|
7343
|
+
status = 204;
|
|
7344
|
+
// Various - #8177: a Not Modified response was received
|
|
7345
|
+
// yet no conditional request headers was provided
|
|
7346
|
+
} else if ( status === 304 &&
|
|
7347
|
+
!headers[ "if-modified-since" ] &&
|
|
7348
|
+
!headers[ "if-none-match" ] ) {
|
|
7349
|
+
status = 200;
|
|
7350
|
+
// Status 0 encompasses several cases
|
|
7351
|
+
} else if ( !status ) {
|
|
7352
|
+
// Cross-domain
|
|
7353
|
+
if ( s.crossDomain ) {
|
|
7354
|
+
if ( !s.statusText ) {
|
|
7355
|
+
// FF, Webkit (other?): There is no status text for errors
|
|
7356
|
+
// 302 is the most generic cross-domain status code
|
|
7357
|
+
// for errors, could be anything really (even a real 0)
|
|
7358
|
+
status = 302;
|
|
7359
|
+
}
|
|
7360
|
+
// All same-domain: for local files, 0 is a success
|
|
7361
|
+
} else if( s.isLocal ) {
|
|
7362
|
+
status = 200;
|
|
7363
|
+
// Opera: this notifies success for all requests
|
|
7364
|
+
// (verified in 11.01). Patch welcome.
|
|
7365
|
+
}
|
|
7366
|
+
// Opera - #6060: sets status as 0 for 304
|
|
7367
|
+
// Patch welcome.
|
|
7368
|
+
}
|
|
7369
|
+
}
|
|
7370
|
+
}
|
|
7371
|
+
} catch( firefoxAccessException ) {
|
|
7372
|
+
if ( !isAbort ) {
|
|
7373
|
+
complete( -1, firefoxAccessException );
|
|
7374
|
+
}
|
|
7375
|
+
}
|
|
7376
|
+
|
|
7377
|
+
// Call complete if needed
|
|
7378
|
+
if ( responses ) {
|
|
7379
|
+
complete( status, statusText, responses, responseHeaders );
|
|
7380
|
+
}
|
|
7381
|
+
};
|
|
7382
|
+
|
|
7383
|
+
// if we're in sync mode or it's in cache
|
|
7384
|
+
// and has been retrieved directly (IE6 & IE7)
|
|
7385
|
+
// we need to manually fire the callback
|
|
7386
|
+
if ( !s.async || xhr.readyState === 4 ) {
|
|
7387
|
+
callback();
|
|
7388
|
+
} else {
|
|
7389
|
+
// Add to list of active xhrs
|
|
7390
|
+
handle = xhrId++;
|
|
7391
|
+
xhrs[ handle ] = xhr;
|
|
7392
|
+
xhr.onreadystatechange = callback;
|
|
7393
|
+
}
|
|
7394
|
+
},
|
|
7395
|
+
|
|
7396
|
+
abort: function() {
|
|
7397
|
+
if ( callback ) {
|
|
7398
|
+
callback(0,1);
|
|
7399
|
+
}
|
|
7400
|
+
}
|
|
7401
|
+
};
|
|
7402
|
+
}
|
|
7403
|
+
});
|
|
7404
|
+
}
|
|
6305
7405
|
|
|
6306
7406
|
})( jQuery );
|
|
6307
7407
|
|
|
@@ -6310,7 +7410,7 @@ jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
|
|
|
6310
7410
|
|
|
6311
7411
|
var elemdisplay = {},
|
|
6312
7412
|
rfxtypes = /^(?:toggle|show|hide)$/,
|
|
6313
|
-
rfxnum = /^([+\-]=)?([\d+.\-]+)(
|
|
7413
|
+
rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
|
|
6314
7414
|
timerId,
|
|
6315
7415
|
fxAttrs = [
|
|
6316
7416
|
// height animations
|
|
@@ -6335,7 +7435,7 @@ jQuery.fn.extend({
|
|
|
6335
7435
|
|
|
6336
7436
|
// Reset the inline display of this element to learn if it is
|
|
6337
7437
|
// being hidden by cascaded rules or not
|
|
6338
|
-
if ( !jQuery.
|
|
7438
|
+
if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
|
|
6339
7439
|
display = elem.style.display = "";
|
|
6340
7440
|
}
|
|
6341
7441
|
|
|
@@ -6343,7 +7443,7 @@ jQuery.fn.extend({
|
|
|
6343
7443
|
// in a stylesheet to whatever the default browser style is
|
|
6344
7444
|
// for such an element
|
|
6345
7445
|
if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
|
|
6346
|
-
jQuery.
|
|
7446
|
+
jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
|
|
6347
7447
|
}
|
|
6348
7448
|
}
|
|
6349
7449
|
|
|
@@ -6354,7 +7454,7 @@ jQuery.fn.extend({
|
|
|
6354
7454
|
display = elem.style.display;
|
|
6355
7455
|
|
|
6356
7456
|
if ( display === "" || display === "none" ) {
|
|
6357
|
-
elem.style.display = jQuery.
|
|
7457
|
+
elem.style.display = jQuery._data(elem, "olddisplay") || "";
|
|
6358
7458
|
}
|
|
6359
7459
|
}
|
|
6360
7460
|
|
|
@@ -6370,8 +7470,8 @@ jQuery.fn.extend({
|
|
|
6370
7470
|
for ( var i = 0, j = this.length; i < j; i++ ) {
|
|
6371
7471
|
var display = jQuery.css( this[i], "display" );
|
|
6372
7472
|
|
|
6373
|
-
if ( display !== "none" ) {
|
|
6374
|
-
jQuery.
|
|
7473
|
+
if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
|
|
7474
|
+
jQuery._data( this[i], "olddisplay", display );
|
|
6375
7475
|
}
|
|
6376
7476
|
}
|
|
6377
7477
|
|
|
@@ -6645,7 +7745,7 @@ jQuery.fx.prototype = {
|
|
|
6645
7745
|
}
|
|
6646
7746
|
|
|
6647
7747
|
var r = parseFloat( jQuery.css( this.elem, this.prop ) );
|
|
6648
|
-
return r
|
|
7748
|
+
return r || 0;
|
|
6649
7749
|
},
|
|
6650
7750
|
|
|
6651
7751
|
// Start an animation from one number to another
|
|
@@ -6841,7 +7941,7 @@ if ( "getBoundingClientRect" in document.documentElement ) {
|
|
|
6841
7941
|
jQuery.fn.offset = function( options ) {
|
|
6842
7942
|
var elem = this[0], box;
|
|
6843
7943
|
|
|
6844
|
-
if ( options ) {
|
|
7944
|
+
if ( options ) {
|
|
6845
7945
|
return this.each(function( i ) {
|
|
6846
7946
|
jQuery.offset.setOffset( this, options, i );
|
|
6847
7947
|
});
|
|
@@ -6864,7 +7964,7 @@ if ( "getBoundingClientRect" in document.documentElement ) {
|
|
|
6864
7964
|
|
|
6865
7965
|
// Make sure we're not dealing with a disconnected DOM node
|
|
6866
7966
|
if ( !box || !jQuery.contains( docElem, elem ) ) {
|
|
6867
|
-
return box
|
|
7967
|
+
return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
|
|
6868
7968
|
}
|
|
6869
7969
|
|
|
6870
7970
|
var body = doc.body,
|
|
@@ -6883,7 +7983,7 @@ if ( "getBoundingClientRect" in document.documentElement ) {
|
|
|
6883
7983
|
jQuery.fn.offset = function( options ) {
|
|
6884
7984
|
var elem = this[0];
|
|
6885
7985
|
|
|
6886
|
-
if ( options ) {
|
|
7986
|
+
if ( options ) {
|
|
6887
7987
|
return this.each(function( i ) {
|
|
6888
7988
|
jQuery.offset.setOffset( this, options, i );
|
|
6889
7989
|
});
|
|
@@ -7002,7 +8102,7 @@ jQuery.offset = {
|
|
|
7002
8102
|
|
|
7003
8103
|
return { top: top, left: left };
|
|
7004
8104
|
},
|
|
7005
|
-
|
|
8105
|
+
|
|
7006
8106
|
setOffset: function( elem, options, i ) {
|
|
7007
8107
|
var position = jQuery.css( elem, "position" );
|
|
7008
8108
|
|
|
@@ -7036,7 +8136,7 @@ jQuery.offset = {
|
|
|
7036
8136
|
if (options.left != null) {
|
|
7037
8137
|
props.left = (options.left - curOffset.left) + curLeft;
|
|
7038
8138
|
}
|
|
7039
|
-
|
|
8139
|
+
|
|
7040
8140
|
if ( "using" in options ) {
|
|
7041
8141
|
options.using.call( elem, props );
|
|
7042
8142
|
} else {
|
|
@@ -7096,7 +8196,7 @@ jQuery.each( ["Left", "Top"], function( i, name ) {
|
|
|
7096
8196
|
|
|
7097
8197
|
jQuery.fn[ method ] = function(val) {
|
|
7098
8198
|
var elem = this[0], win;
|
|
7099
|
-
|
|
8199
|
+
|
|
7100
8200
|
if ( !elem ) {
|
|
7101
8201
|
return null;
|
|
7102
8202
|
}
|
|
@@ -7166,7 +8266,7 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
|
|
|
7166
8266
|
if ( !elem ) {
|
|
7167
8267
|
return size == null ? null : this;
|
|
7168
8268
|
}
|
|
7169
|
-
|
|
8269
|
+
|
|
7170
8270
|
if ( jQuery.isFunction( size ) ) {
|
|
7171
8271
|
return this.each(function( i ) {
|
|
7172
8272
|
var self = jQuery( this );
|
|
@@ -7176,8 +8276,10 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
|
|
|
7176
8276
|
|
|
7177
8277
|
if ( jQuery.isWindow( elem ) ) {
|
|
7178
8278
|
// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
|
|
7179
|
-
|
|
7180
|
-
|
|
8279
|
+
// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
|
|
8280
|
+
var docElemProp = elem.document.documentElement[ "client" + name ];
|
|
8281
|
+
return elem.document.compatMode === "CSS1Compat" && docElemProp ||
|
|
8282
|
+
elem.document.body[ "client" + name ] || docElemProp;
|
|
7181
8283
|
|
|
7182
8284
|
// Get document width or height
|
|
7183
8285
|
} else if ( elem.nodeType === 9 ) {
|