jquery-source 1.6.2 → 1.6.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/lib/jquery-source/version.rb +1 -1
- data/vendor/assets/javascripts/jquery.js +226 -163
- metadata +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* jQuery JavaScript Library v1.6.
|
2
|
+
* jQuery JavaScript Library v1.6.3
|
3
3
|
* http://jquery.com/
|
4
4
|
*
|
5
5
|
* Copyright 2011, John Resig
|
@@ -11,7 +11,7 @@
|
|
11
11
|
* Copyright 2011, The Dojo Foundation
|
12
12
|
* Released under the MIT, BSD, and GPL Licenses.
|
13
13
|
*
|
14
|
-
* Date:
|
14
|
+
* Date: Wed Aug 31 10:35:15 2011 -0400
|
15
15
|
*/
|
16
16
|
(function( window, undefined ) {
|
17
17
|
|
@@ -37,8 +37,8 @@ var jQuery = function( selector, context ) {
|
|
37
37
|
rootjQuery,
|
38
38
|
|
39
39
|
// A simple way to check for HTML strings or ID strings
|
40
|
-
//
|
41
|
-
quickExpr = /^(?:[
|
40
|
+
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
41
|
+
quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
|
42
42
|
|
43
43
|
// Check if a string has a non-whitespace character in it
|
44
44
|
rnotwhite = /\S/,
|
@@ -66,11 +66,12 @@ var jQuery = function( selector, context ) {
|
|
66
66
|
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
|
67
67
|
|
68
68
|
// Matches dashed string for camelizing
|
69
|
-
rdashAlpha = /-([a-z])/ig,
|
69
|
+
rdashAlpha = /-([a-z]|[0-9])/ig,
|
70
|
+
rmsPrefix = /^-ms-/,
|
70
71
|
|
71
72
|
// Used by jQuery.camelCase as callback to replace()
|
72
73
|
fcamelCase = function( all, letter ) {
|
73
|
-
return letter.toUpperCase();
|
74
|
+
return ( letter + "" ).toUpperCase();
|
74
75
|
},
|
75
76
|
|
76
77
|
// Keep a UserAgent string for use with jQuery.browser
|
@@ -212,7 +213,7 @@ jQuery.fn = jQuery.prototype = {
|
|
212
213
|
selector: "",
|
213
214
|
|
214
215
|
// The current version of jQuery being used
|
215
|
-
jquery: "1.6.
|
216
|
+
jquery: "1.6.3",
|
216
217
|
|
217
218
|
// The default length of a jQuery object is 0
|
218
219
|
length: 0,
|
@@ -521,10 +522,15 @@ jQuery.extend({
|
|
521
522
|
return false;
|
522
523
|
}
|
523
524
|
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
525
|
+
try {
|
526
|
+
// Not own constructor property must be Object
|
527
|
+
if ( obj.constructor &&
|
528
|
+
!hasOwn.call(obj, "constructor") &&
|
529
|
+
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
|
530
|
+
return false;
|
531
|
+
}
|
532
|
+
} catch ( e ) {
|
533
|
+
// IE8,9 Will throw exceptions on certain host objects #9897
|
528
534
|
return false;
|
529
535
|
}
|
530
536
|
|
@@ -574,24 +580,23 @@ jQuery.extend({
|
|
574
580
|
},
|
575
581
|
|
576
582
|
// Cross-browser xml parsing
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
if ( !
|
583
|
+
parseXML: function( data ) {
|
584
|
+
var xml, tmp;
|
585
|
+
try {
|
586
|
+
if ( window.DOMParser ) { // Standard
|
587
|
+
tmp = new DOMParser();
|
588
|
+
xml = tmp.parseFromString( data , "text/xml" );
|
589
|
+
} else { // IE
|
590
|
+
xml = new ActiveXObject( "Microsoft.XMLDOM" );
|
591
|
+
xml.async = "false";
|
592
|
+
xml.loadXML( data );
|
593
|
+
}
|
594
|
+
} catch( e ) {
|
595
|
+
xml = undefined;
|
596
|
+
}
|
597
|
+
if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
|
592
598
|
jQuery.error( "Invalid XML: " + data );
|
593
599
|
}
|
594
|
-
|
595
600
|
return xml;
|
596
601
|
},
|
597
602
|
|
@@ -611,10 +616,10 @@ jQuery.extend({
|
|
611
616
|
}
|
612
617
|
},
|
613
618
|
|
614
|
-
//
|
615
|
-
//
|
619
|
+
// Convert dashed to camelCase; used by the css and data modules
|
620
|
+
// Microsoft forgot to hump their vendor prefix (#9572)
|
616
621
|
camelCase: function( string ) {
|
617
|
-
return string.replace( rdashAlpha, fcamelCase );
|
622
|
+
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
618
623
|
},
|
619
624
|
|
620
625
|
nodeName: function( elem, name ) {
|
@@ -699,6 +704,9 @@ jQuery.extend({
|
|
699
704
|
},
|
700
705
|
|
701
706
|
inArray: function( elem, array ) {
|
707
|
+
if ( !array ) {
|
708
|
+
return -1;
|
709
|
+
}
|
702
710
|
|
703
711
|
if ( indexOf ) {
|
704
712
|
return indexOf.call( array, elem );
|
@@ -1071,7 +1079,7 @@ jQuery.extend({
|
|
1071
1079
|
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
1072
1080
|
returned.promise().then( newDefer.resolve, newDefer.reject );
|
1073
1081
|
} else {
|
1074
|
-
newDefer[ action ]( returned );
|
1082
|
+
newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
|
1075
1083
|
}
|
1076
1084
|
});
|
1077
1085
|
} else {
|
@@ -1171,7 +1179,8 @@ jQuery.support = (function() {
|
|
1171
1179
|
|
1172
1180
|
// Preliminary tests
|
1173
1181
|
div.setAttribute("className", "t");
|
1174
|
-
div.innerHTML = " <link
|
1182
|
+
div.innerHTML = " <link><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type=checkbox>";
|
1183
|
+
|
1175
1184
|
|
1176
1185
|
all = div.getElementsByTagName( "*" );
|
1177
1186
|
a = div.getElementsByTagName( "a" )[ 0 ];
|
@@ -1293,13 +1302,14 @@ jQuery.support = (function() {
|
|
1293
1302
|
width: 0,
|
1294
1303
|
height: 0,
|
1295
1304
|
border: 0,
|
1296
|
-
margin: 0
|
1305
|
+
margin: 0,
|
1306
|
+
background: "none"
|
1297
1307
|
};
|
1298
1308
|
if ( body ) {
|
1299
1309
|
jQuery.extend( testElementStyle, {
|
1300
1310
|
position: "absolute",
|
1301
|
-
left: -
|
1302
|
-
top: -
|
1311
|
+
left: "-1000px",
|
1312
|
+
top: "-1000px"
|
1303
1313
|
});
|
1304
1314
|
}
|
1305
1315
|
for ( i in testElementStyle ) {
|
@@ -1436,7 +1446,9 @@ jQuery.extend({
|
|
1436
1446
|
return;
|
1437
1447
|
}
|
1438
1448
|
|
1439
|
-
var
|
1449
|
+
var thisCache, ret,
|
1450
|
+
internalKey = jQuery.expando,
|
1451
|
+
getByName = typeof name === "string",
|
1440
1452
|
|
1441
1453
|
// We have to handle DOM nodes and JS objects differently because IE6-7
|
1442
1454
|
// can't GC object references properly across the DOM-JS boundary
|
@@ -1452,7 +1464,7 @@ jQuery.extend({
|
|
1452
1464
|
|
1453
1465
|
// Avoid doing any more work than we need to when trying to get data on an
|
1454
1466
|
// object that has no data at all
|
1455
|
-
if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
|
1467
|
+
if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) {
|
1456
1468
|
return;
|
1457
1469
|
}
|
1458
1470
|
|
@@ -1511,10 +1523,24 @@ jQuery.extend({
|
|
1511
1523
|
return thisCache[ internalKey ] && thisCache[ internalKey ].events;
|
1512
1524
|
}
|
1513
1525
|
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1526
|
+
// Check for both converted-to-camel and non-converted data property names
|
1527
|
+
// If a data property was specified
|
1528
|
+
if ( getByName ) {
|
1529
|
+
|
1530
|
+
// First Try to find as-is property data
|
1531
|
+
ret = thisCache[ name ];
|
1532
|
+
|
1533
|
+
// Test for null|undefined property data
|
1534
|
+
if ( ret == null ) {
|
1535
|
+
|
1536
|
+
// Try to find the camelCased property
|
1537
|
+
ret = thisCache[ jQuery.camelCase( name ) ];
|
1538
|
+
}
|
1539
|
+
} else {
|
1540
|
+
ret = thisCache;
|
1541
|
+
}
|
1542
|
+
|
1543
|
+
return ret;
|
1518
1544
|
},
|
1519
1545
|
|
1520
1546
|
removeData: function( elem, name, pvt /* Internal Use Only */ ) {
|
@@ -1522,7 +1548,12 @@ jQuery.extend({
|
|
1522
1548
|
return;
|
1523
1549
|
}
|
1524
1550
|
|
1525
|
-
var
|
1551
|
+
var thisCache,
|
1552
|
+
|
1553
|
+
// Reference to internal data cache key
|
1554
|
+
internalKey = jQuery.expando,
|
1555
|
+
|
1556
|
+
isNode = elem.nodeType,
|
1526
1557
|
|
1527
1558
|
// See jQuery.data for more information
|
1528
1559
|
cache = isNode ? jQuery.cache : elem,
|
@@ -1537,9 +1568,16 @@ jQuery.extend({
|
|
1537
1568
|
}
|
1538
1569
|
|
1539
1570
|
if ( name ) {
|
1540
|
-
|
1571
|
+
|
1572
|
+
thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
|
1541
1573
|
|
1542
1574
|
if ( thisCache ) {
|
1575
|
+
|
1576
|
+
// Support interoperable removal of hyphenated or camelcased keys
|
1577
|
+
if ( !thisCache[ name ] ) {
|
1578
|
+
name = jQuery.camelCase( name );
|
1579
|
+
}
|
1580
|
+
|
1543
1581
|
delete thisCache[ name ];
|
1544
1582
|
|
1545
1583
|
// If there is no data left in the cache, we want to continue
|
@@ -1566,7 +1604,8 @@ jQuery.extend({
|
|
1566
1604
|
// Browsers that fail expando deletion also refuse to delete expandos on
|
1567
1605
|
// the window, but it will allow it on all other JS objects; other browsers
|
1568
1606
|
// don't care
|
1569
|
-
|
1607
|
+
// Ensure that `cache` is not a window object #10080
|
1608
|
+
if ( jQuery.support.deleteExpando || !cache.setInterval ) {
|
1570
1609
|
delete cache[ id ];
|
1571
1610
|
} else {
|
1572
1611
|
cache[ id ] = null;
|
@@ -1910,8 +1949,7 @@ var rclass = /[\n\t\r]/g,
|
|
1910
1949
|
rfocusable = /^(?:button|input|object|select|textarea)$/i,
|
1911
1950
|
rclickable = /^a(?:rea)?$/i,
|
1912
1951
|
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
1913
|
-
|
1914
|
-
formHook, boolHook;
|
1952
|
+
nodeHook, boolHook;
|
1915
1953
|
|
1916
1954
|
jQuery.fn.extend({
|
1917
1955
|
attr: function( name, value ) {
|
@@ -2049,7 +2087,7 @@ jQuery.fn.extend({
|
|
2049
2087
|
hasClass: function( selector ) {
|
2050
2088
|
var className = " " + selector + " ";
|
2051
2089
|
for ( var i = 0, l = this.length; i < l; i++ ) {
|
2052
|
-
if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
|
2090
|
+
if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
|
2053
2091
|
return true;
|
2054
2092
|
}
|
2055
2093
|
}
|
@@ -2229,14 +2267,11 @@ jQuery.extend({
|
|
2229
2267
|
if ( !hooks ) {
|
2230
2268
|
// Use boolHook for boolean attributes
|
2231
2269
|
if ( rboolean.test( name ) ) {
|
2232
|
-
|
2233
2270
|
hooks = boolHook;
|
2234
2271
|
|
2235
|
-
// Use
|
2236
|
-
} else if (
|
2237
|
-
|
2238
|
-
|
2239
|
-
hooks = formHook;
|
2272
|
+
// Use nodeHook if available( IE6/7 )
|
2273
|
+
} else if ( nodeHook ) {
|
2274
|
+
hooks = nodeHook;
|
2240
2275
|
}
|
2241
2276
|
}
|
2242
2277
|
}
|
@@ -2273,14 +2308,9 @@ jQuery.extend({
|
|
2273
2308
|
var propName;
|
2274
2309
|
if ( elem.nodeType === 1 ) {
|
2275
2310
|
name = jQuery.attrFix[ name ] || name;
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2279
|
-
elem.removeAttribute( name );
|
2280
|
-
} else {
|
2281
|
-
jQuery.attr( elem, name, "" );
|
2282
|
-
elem.removeAttributeNode( elem.getAttributeNode( name ) );
|
2283
|
-
}
|
2311
|
+
|
2312
|
+
jQuery.attr( elem, name, "" );
|
2313
|
+
elem.removeAttribute( name );
|
2284
2314
|
|
2285
2315
|
// Set corresponding property to false for boolean attributes
|
2286
2316
|
if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
|
@@ -2308,33 +2338,20 @@ jQuery.extend({
|
|
2308
2338
|
}
|
2309
2339
|
}
|
2310
2340
|
},
|
2311
|
-
tabIndex: {
|
2312
|
-
get: function( elem ) {
|
2313
|
-
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
2314
|
-
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
2315
|
-
var attributeNode = elem.getAttributeNode("tabIndex");
|
2316
|
-
|
2317
|
-
return attributeNode && attributeNode.specified ?
|
2318
|
-
parseInt( attributeNode.value, 10 ) :
|
2319
|
-
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
2320
|
-
0 :
|
2321
|
-
undefined;
|
2322
|
-
}
|
2323
|
-
},
|
2324
2341
|
// Use the value property for back compat
|
2325
|
-
// Use the
|
2342
|
+
// Use the nodeHook for button elements in IE6/7 (#1954)
|
2326
2343
|
value: {
|
2327
2344
|
get: function( elem, name ) {
|
2328
|
-
if (
|
2329
|
-
return
|
2345
|
+
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
|
2346
|
+
return nodeHook.get( elem, name );
|
2330
2347
|
}
|
2331
2348
|
return name in elem ?
|
2332
2349
|
elem.value :
|
2333
2350
|
null;
|
2334
2351
|
},
|
2335
2352
|
set: function( elem, value, name ) {
|
2336
|
-
if (
|
2337
|
-
return
|
2353
|
+
if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
|
2354
|
+
return nodeHook.set( elem, value, name );
|
2338
2355
|
}
|
2339
2356
|
// Does not return so that setAttribute is also used
|
2340
2357
|
elem.value = value;
|
@@ -2383,7 +2400,7 @@ jQuery.extend({
|
|
2383
2400
|
}
|
2384
2401
|
|
2385
2402
|
} else {
|
2386
|
-
if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !==
|
2403
|
+
if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
|
2387
2404
|
return ret;
|
2388
2405
|
|
2389
2406
|
} else {
|
@@ -2392,14 +2409,33 @@ jQuery.extend({
|
|
2392
2409
|
}
|
2393
2410
|
},
|
2394
2411
|
|
2395
|
-
propHooks: {
|
2412
|
+
propHooks: {
|
2413
|
+
tabIndex: {
|
2414
|
+
get: function( elem ) {
|
2415
|
+
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
2416
|
+
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
2417
|
+
var attributeNode = elem.getAttributeNode("tabindex");
|
2418
|
+
|
2419
|
+
return attributeNode && attributeNode.specified ?
|
2420
|
+
parseInt( attributeNode.value, 10 ) :
|
2421
|
+
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
2422
|
+
0 :
|
2423
|
+
undefined;
|
2424
|
+
}
|
2425
|
+
}
|
2426
|
+
}
|
2396
2427
|
});
|
2397
2428
|
|
2429
|
+
// Add the tabindex propHook to attrHooks for back-compat
|
2430
|
+
jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex;
|
2431
|
+
|
2398
2432
|
// Hook for boolean attributes
|
2399
2433
|
boolHook = {
|
2400
2434
|
get: function( elem, name ) {
|
2401
2435
|
// Align boolean attributes with corresponding properties
|
2402
|
-
|
2436
|
+
// Fall back to attribute presence where some booleans are not supported
|
2437
|
+
var attrNode;
|
2438
|
+
return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ?
|
2403
2439
|
name.toLowerCase() :
|
2404
2440
|
undefined;
|
2405
2441
|
},
|
@@ -2425,12 +2461,10 @@ boolHook = {
|
|
2425
2461
|
|
2426
2462
|
// IE6/7 do not support getting/setting some attributes with get/setAttribute
|
2427
2463
|
if ( !jQuery.support.getSetAttribute ) {
|
2428
|
-
|
2429
|
-
// propFix is more comprehensive and contains all fixes
|
2430
|
-
jQuery.attrFix = jQuery.propFix;
|
2431
2464
|
|
2432
|
-
// Use this for any attribute
|
2433
|
-
|
2465
|
+
// Use this for any attribute in IE6/7
|
2466
|
+
// This fixes almost every IE6/7 issue
|
2467
|
+
nodeHook = jQuery.valHooks.button = {
|
2434
2468
|
get: function( elem, name ) {
|
2435
2469
|
var ret;
|
2436
2470
|
ret = elem.getAttributeNode( name );
|
@@ -2440,13 +2474,13 @@ if ( !jQuery.support.getSetAttribute ) {
|
|
2440
2474
|
undefined;
|
2441
2475
|
},
|
2442
2476
|
set: function( elem, value, name ) {
|
2443
|
-
//
|
2444
|
-
// Only use nodeValue if the attribute node exists on the form
|
2477
|
+
// Set the existing or create a new attribute node
|
2445
2478
|
var ret = elem.getAttributeNode( name );
|
2446
|
-
if ( ret ) {
|
2447
|
-
ret
|
2448
|
-
|
2479
|
+
if ( !ret ) {
|
2480
|
+
ret = document.createAttribute( name );
|
2481
|
+
elem.setAttributeNode( ret );
|
2449
2482
|
}
|
2483
|
+
return (ret.nodeValue = value + "");
|
2450
2484
|
}
|
2451
2485
|
};
|
2452
2486
|
|
@@ -2505,6 +2539,7 @@ if ( !jQuery.support.optSelected ) {
|
|
2505
2539
|
parent.parentNode.selectedIndex;
|
2506
2540
|
}
|
2507
2541
|
}
|
2542
|
+
return null;
|
2508
2543
|
}
|
2509
2544
|
});
|
2510
2545
|
}
|
@@ -3236,7 +3271,7 @@ if ( !jQuery.support.submitBubbles ) {
|
|
3236
3271
|
if ( !jQuery.nodeName( this, "form" ) ) {
|
3237
3272
|
jQuery.event.add(this, "click.specialSubmit", function( e ) {
|
3238
3273
|
var elem = e.target,
|
3239
|
-
type = elem.type;
|
3274
|
+
type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
|
3240
3275
|
|
3241
3276
|
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
|
3242
3277
|
trigger( "submit", this, arguments );
|
@@ -3245,7 +3280,7 @@ if ( !jQuery.support.submitBubbles ) {
|
|
3245
3280
|
|
3246
3281
|
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
|
3247
3282
|
var elem = e.target,
|
3248
|
-
type = elem.type;
|
3283
|
+
type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
|
3249
3284
|
|
3250
3285
|
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
|
3251
3286
|
trigger( "submit", this, arguments );
|
@@ -3270,7 +3305,8 @@ if ( !jQuery.support.changeBubbles ) {
|
|
3270
3305
|
var changeFilters,
|
3271
3306
|
|
3272
3307
|
getVal = function( elem ) {
|
3273
|
-
var type = elem
|
3308
|
+
var type = jQuery.nodeName( elem, "input" ) ? elem.type : "",
|
3309
|
+
val = elem.value;
|
3274
3310
|
|
3275
3311
|
if ( type === "radio" || type === "checkbox" ) {
|
3276
3312
|
val = elem.checked;
|
@@ -5295,12 +5331,17 @@ jQuery.fn.extend({
|
|
5295
5331
|
// Determine the position of an element within
|
5296
5332
|
// the matched set of elements
|
5297
5333
|
index: function( elem ) {
|
5298
|
-
|
5299
|
-
|
5300
|
-
|
5301
|
-
|
5302
|
-
elem ? jQuery( elem ) : this.parent().children() );
|
5334
|
+
|
5335
|
+
// No argument, return index in parent
|
5336
|
+
if ( !elem ) {
|
5337
|
+
return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
|
5303
5338
|
}
|
5339
|
+
|
5340
|
+
// index in selector
|
5341
|
+
if ( typeof elem === "string" ) {
|
5342
|
+
return jQuery.inArray( this[0], jQuery( elem ) );
|
5343
|
+
}
|
5344
|
+
|
5304
5345
|
// Locate the position of the desired element
|
5305
5346
|
return jQuery.inArray(
|
5306
5347
|
// If it receives a jQuery object, the first element is used
|
@@ -6048,7 +6089,10 @@ jQuery.extend({
|
|
6048
6089
|
// with an element if you are cloning the body and one of the
|
6049
6090
|
// elements on the page has a name or id of "length"
|
6050
6091
|
for ( i = 0; srcElements[i]; ++i ) {
|
6051
|
-
|
6092
|
+
// Ensure that the destination node is not null; Fixes #9587
|
6093
|
+
if ( destElements[i] ) {
|
6094
|
+
cloneFixAttributes( srcElements[i], destElements[i] );
|
6095
|
+
}
|
6052
6096
|
}
|
6053
6097
|
}
|
6054
6098
|
|
@@ -6248,14 +6292,14 @@ function evalScript( i, elem ) {
|
|
6248
6292
|
|
6249
6293
|
|
6250
6294
|
|
6295
|
+
|
6251
6296
|
var ralpha = /alpha\([^)]*\)/i,
|
6252
6297
|
ropacity = /opacity=([^)]*)/,
|
6253
6298
|
// fixed for IE9, see #8346
|
6254
6299
|
rupper = /([A-Z]|^ms)/g,
|
6255
6300
|
rnumpx = /^-?\d+(?:px)?$/i,
|
6256
6301
|
rnum = /^-?\d/,
|
6257
|
-
rrelNum = /^[
|
6258
|
-
rrelNumFilter = /[^+\-\.\de]+/g,
|
6302
|
+
rrelNum = /^([\-+])=([\-+.\de]+)/,
|
6259
6303
|
|
6260
6304
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6261
6305
|
cssWidth = [ "Left", "Right" ],
|
@@ -6332,18 +6376,18 @@ jQuery.extend({
|
|
6332
6376
|
if ( value !== undefined ) {
|
6333
6377
|
type = typeof value;
|
6334
6378
|
|
6335
|
-
// Make sure that NaN and null values aren't set. See: #7116
|
6336
|
-
if ( type === "number" && isNaN( value ) || value == null ) {
|
6337
|
-
return;
|
6338
|
-
}
|
6339
|
-
|
6340
6379
|
// convert relative number strings (+= or -=) to relative numbers. #7345
|
6341
|
-
if ( type === "string" && rrelNum.
|
6342
|
-
value = +
|
6380
|
+
if ( type === "string" && (ret = rrelNum.exec( value )) ) {
|
6381
|
+
value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
|
6343
6382
|
// Fixes bug #9237
|
6344
6383
|
type = "number";
|
6345
6384
|
}
|
6346
6385
|
|
6386
|
+
// Make sure that NaN and null values aren't set. See: #7116
|
6387
|
+
if ( value == null || type === "number" && isNaN( value ) ) {
|
6388
|
+
return;
|
6389
|
+
}
|
6390
|
+
|
6347
6391
|
// If a number was passed in, add 'px' to the (except for certain CSS properties)
|
6348
6392
|
if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
|
6349
6393
|
value += "px";
|
@@ -6459,18 +6503,29 @@ if ( !jQuery.support.opacity ) {
|
|
6459
6503
|
|
6460
6504
|
set: function( elem, value ) {
|
6461
6505
|
var style = elem.style,
|
6462
|
-
currentStyle = elem.currentStyle
|
6506
|
+
currentStyle = elem.currentStyle,
|
6507
|
+
opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
|
6508
|
+
filter = currentStyle && currentStyle.filter || style.filter || "";
|
6463
6509
|
|
6464
6510
|
// IE has trouble with opacity if it does not have layout
|
6465
6511
|
// Force it by setting the zoom level
|
6466
6512
|
style.zoom = 1;
|
6467
6513
|
|
6468
|
-
//
|
6469
|
-
|
6470
|
-
|
6471
|
-
"
|
6472
|
-
filter
|
6514
|
+
// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
|
6515
|
+
if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
|
6516
|
+
|
6517
|
+
// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
|
6518
|
+
// if "filter:" is present at all, clearType is disabled, we want to avoid this
|
6519
|
+
// style.removeAttribute is IE Only, but so apparently is this code path...
|
6520
|
+
style.removeAttribute( "filter" );
|
6473
6521
|
|
6522
|
+
// if there there is no filter style applied in a css rule, we are done
|
6523
|
+
if ( currentStyle && !currentStyle.filter ) {
|
6524
|
+
return;
|
6525
|
+
}
|
6526
|
+
}
|
6527
|
+
|
6528
|
+
// otherwise, set new filter values
|
6474
6529
|
style.filter = ralpha.test( filter ) ?
|
6475
6530
|
filter.replace( ralpha, opacity ) :
|
6476
6531
|
filter + " " + opacity;
|
@@ -6625,9 +6680,9 @@ var r20 = /%20/g,
|
|
6625
6680
|
rCRLF = /\r?\n/g,
|
6626
6681
|
rhash = /#.*$/,
|
6627
6682
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
|
6628
|
-
rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
6683
|
+
rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
6629
6684
|
// #7653, #8125, #8152: local protocol detection
|
6630
|
-
rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
|
6685
|
+
rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
|
6631
6686
|
rnoContent = /^(?:GET|HEAD)$/,
|
6632
6687
|
rprotocol = /^\/\//,
|
6633
6688
|
rquery = /\?/,
|
@@ -6662,7 +6717,10 @@ var r20 = /%20/g,
|
|
6662
6717
|
ajaxLocation,
|
6663
6718
|
|
6664
6719
|
// Document location segments
|
6665
|
-
ajaxLocParts
|
6720
|
+
ajaxLocParts,
|
6721
|
+
|
6722
|
+
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
6723
|
+
allTypes = ["*/"] + ["*"];
|
6666
6724
|
|
6667
6725
|
// #8138, IE may throw an exception when accessing
|
6668
6726
|
// a field from window.location if document.domain has been set
|
@@ -6755,6 +6813,22 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
|
|
6755
6813
|
return selection;
|
6756
6814
|
}
|
6757
6815
|
|
6816
|
+
// A special extend for ajax options
|
6817
|
+
// that takes "flat" options (not to be deep extended)
|
6818
|
+
// Fixes #9887
|
6819
|
+
function ajaxExtend( target, src ) {
|
6820
|
+
var key, deep,
|
6821
|
+
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
6822
|
+
for( key in src ) {
|
6823
|
+
if ( src[ key ] !== undefined ) {
|
6824
|
+
( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
|
6825
|
+
}
|
6826
|
+
}
|
6827
|
+
if ( deep ) {
|
6828
|
+
jQuery.extend( true, target, deep );
|
6829
|
+
}
|
6830
|
+
}
|
6831
|
+
|
6758
6832
|
jQuery.fn.extend({
|
6759
6833
|
load: function( url, params, callback ) {
|
6760
6834
|
if ( typeof url !== "string" && _load ) {
|
@@ -6898,23 +6972,16 @@ jQuery.extend({
|
|
6898
6972
|
// Creates a full fledged settings object into target
|
6899
6973
|
// with both ajaxSettings and settings fields.
|
6900
6974
|
// If target is omitted, writes into ajaxSettings.
|
6901
|
-
ajaxSetup: function
|
6902
|
-
if (
|
6903
|
-
//
|
6904
|
-
|
6905
|
-
target = jQuery.extend( true, jQuery.ajaxSettings, settings );
|
6975
|
+
ajaxSetup: function( target, settings ) {
|
6976
|
+
if ( settings ) {
|
6977
|
+
// Building a settings object
|
6978
|
+
ajaxExtend( target, jQuery.ajaxSettings );
|
6906
6979
|
} else {
|
6907
|
-
//
|
6908
|
-
|
6909
|
-
|
6910
|
-
// Flatten fields we don't want deep extended
|
6911
|
-
for( var field in { context: 1, url: 1 } ) {
|
6912
|
-
if ( field in settings ) {
|
6913
|
-
target[ field ] = settings[ field ];
|
6914
|
-
} else if( field in jQuery.ajaxSettings ) {
|
6915
|
-
target[ field ] = jQuery.ajaxSettings[ field ];
|
6916
|
-
}
|
6980
|
+
// Extending ajaxSettings
|
6981
|
+
settings = target;
|
6982
|
+
target = jQuery.ajaxSettings;
|
6917
6983
|
}
|
6984
|
+
ajaxExtend( target, settings );
|
6918
6985
|
return target;
|
6919
6986
|
},
|
6920
6987
|
|
@@ -6942,7 +7009,7 @@ jQuery.extend({
|
|
6942
7009
|
html: "text/html",
|
6943
7010
|
text: "text/plain",
|
6944
7011
|
json: "application/json, text/javascript",
|
6945
|
-
"*":
|
7012
|
+
"*": allTypes
|
6946
7013
|
},
|
6947
7014
|
|
6948
7015
|
contents: {
|
@@ -6972,6 +7039,15 @@ jQuery.extend({
|
|
6972
7039
|
|
6973
7040
|
// Parse text as xml
|
6974
7041
|
"text xml": jQuery.parseXML
|
7042
|
+
},
|
7043
|
+
|
7044
|
+
// For options that shouldn't be deep extended:
|
7045
|
+
// you can add your own custom options here if
|
7046
|
+
// and when you create one that shouldn't be
|
7047
|
+
// deep extended (see ajaxExtend)
|
7048
|
+
flatOptions: {
|
7049
|
+
context: true,
|
7050
|
+
url: true
|
6975
7051
|
}
|
6976
7052
|
},
|
6977
7053
|
|
@@ -7082,7 +7158,7 @@ jQuery.extend({
|
|
7082
7158
|
// Callback for when everything is done
|
7083
7159
|
// It is defined here because jslint complains if it is declared
|
7084
7160
|
// at the end of the function (which would be more logical and readable)
|
7085
|
-
function done( status,
|
7161
|
+
function done( status, nativeStatusText, responses, headers ) {
|
7086
7162
|
|
7087
7163
|
// Called once
|
7088
7164
|
if ( state === 2 ) {
|
@@ -7105,11 +7181,12 @@ jQuery.extend({
|
|
7105
7181
|
responseHeadersString = headers || "";
|
7106
7182
|
|
7107
7183
|
// Set readyState
|
7108
|
-
jqXHR.readyState = status ? 4 : 0;
|
7184
|
+
jqXHR.readyState = status > 0 ? 4 : 0;
|
7109
7185
|
|
7110
7186
|
var isSuccess,
|
7111
7187
|
success,
|
7112
7188
|
error,
|
7189
|
+
statusText = nativeStatusText,
|
7113
7190
|
response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
|
7114
7191
|
lastModified,
|
7115
7192
|
etag;
|
@@ -7161,7 +7238,7 @@ jQuery.extend({
|
|
7161
7238
|
|
7162
7239
|
// Set data for the fake xhr object
|
7163
7240
|
jqXHR.status = status;
|
7164
|
-
jqXHR.statusText = statusText;
|
7241
|
+
jqXHR.statusText = "" + ( nativeStatusText || statusText );
|
7165
7242
|
|
7166
7243
|
// Success/Error
|
7167
7244
|
if ( isSuccess ) {
|
@@ -7183,7 +7260,7 @@ jQuery.extend({
|
|
7183
7260
|
completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
|
7184
7261
|
|
7185
7262
|
if ( fireGlobals ) {
|
7186
|
-
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
|
7263
|
+
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
|
7187
7264
|
// Handle the global AJAX counter
|
7188
7265
|
if ( !( --jQuery.active ) ) {
|
7189
7266
|
jQuery.event.trigger( "ajaxStop" );
|
@@ -7264,6 +7341,8 @@ jQuery.extend({
|
|
7264
7341
|
// If data is available, append data to url
|
7265
7342
|
if ( s.data ) {
|
7266
7343
|
s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
|
7344
|
+
// #9682: remove data so that it's not used in an eventual retry
|
7345
|
+
delete s.data;
|
7267
7346
|
}
|
7268
7347
|
|
7269
7348
|
// Get ifModifiedKey before adding the anti-cache parameter
|
@@ -7301,7 +7380,7 @@ jQuery.extend({
|
|
7301
7380
|
jqXHR.setRequestHeader(
|
7302
7381
|
"Accept",
|
7303
7382
|
s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
|
7304
|
-
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ",
|
7383
|
+
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
|
7305
7384
|
s.accepts[ "*" ]
|
7306
7385
|
);
|
7307
7386
|
|
@@ -7347,7 +7426,7 @@ jQuery.extend({
|
|
7347
7426
|
transport.send( requestHeaders, done );
|
7348
7427
|
} catch (e) {
|
7349
7428
|
// Propagate exception as error if not done
|
7350
|
-
if (
|
7429
|
+
if ( state < 2 ) {
|
7351
7430
|
done( -1, e );
|
7352
7431
|
// Simply rethrow otherwise
|
7353
7432
|
} else {
|
@@ -7995,10 +8074,7 @@ var elemdisplay = {},
|
|
7995
8074
|
// opacity animations
|
7996
8075
|
[ "opacity" ]
|
7997
8076
|
],
|
7998
|
-
fxNow
|
7999
|
-
requestAnimationFrame = window.webkitRequestAnimationFrame ||
|
8000
|
-
window.mozRequestAnimationFrame ||
|
8001
|
-
window.oRequestAnimationFrame;
|
8077
|
+
fxNow;
|
8002
8078
|
|
8003
8079
|
jQuery.fn.extend({
|
8004
8080
|
show: function( speed, easing, callback ) {
|
@@ -8374,8 +8450,7 @@ jQuery.fx.prototype = {
|
|
8374
8450
|
// Start an animation from one number to another
|
8375
8451
|
custom: function( from, to, unit ) {
|
8376
8452
|
var self = this,
|
8377
|
-
fx = jQuery.fx
|
8378
|
-
raf;
|
8453
|
+
fx = jQuery.fx;
|
8379
8454
|
|
8380
8455
|
this.startTime = fxNow || createFxNow();
|
8381
8456
|
this.start = from;
|
@@ -8391,20 +8466,7 @@ jQuery.fx.prototype = {
|
|
8391
8466
|
t.elem = this.elem;
|
8392
8467
|
|
8393
8468
|
if ( t() && jQuery.timers.push(t) && !timerId ) {
|
8394
|
-
|
8395
|
-
if ( requestAnimationFrame ) {
|
8396
|
-
timerId = true;
|
8397
|
-
raf = function() {
|
8398
|
-
// When timerId gets set to null at any point, this stops
|
8399
|
-
if ( timerId ) {
|
8400
|
-
requestAnimationFrame( raf );
|
8401
|
-
fx.tick();
|
8402
|
-
}
|
8403
|
-
};
|
8404
|
-
requestAnimationFrame( raf );
|
8405
|
-
} else {
|
8406
|
-
timerId = setInterval( fx.tick, fx.interval );
|
8407
|
-
}
|
8469
|
+
timerId = setInterval( fx.tick, fx.interval );
|
8408
8470
|
}
|
8409
8471
|
},
|
8410
8472
|
|
@@ -8947,9 +9009,10 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
|
|
8947
9009
|
if ( jQuery.isWindow( elem ) ) {
|
8948
9010
|
// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
|
8949
9011
|
// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
|
8950
|
-
var docElemProp = elem.document.documentElement[ "client" + name ]
|
9012
|
+
var docElemProp = elem.document.documentElement[ "client" + name ],
|
9013
|
+
body = elem.document.body;
|
8951
9014
|
return elem.document.compatMode === "CSS1Compat" && docElemProp ||
|
8952
|
-
|
9015
|
+
body && body[ "client" + name ] || docElemProp;
|
8953
9016
|
|
8954
9017
|
// Get document width or height
|
8955
9018
|
} else if ( elem.nodeType === 9 ) {
|