jquery-source 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Jquery
2
2
  module Source
3
- VERSION = "1.6.0"
3
+ VERSION = "1.6.1"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery JavaScript Library v1.6
2
+ * jQuery JavaScript Library v1.6.1
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: Mon May 2 13:50:00 2011 -0400
14
+ * Date: Thu May 12 15:04:36 2011 -0400
15
15
  */
16
16
  (function( window, undefined ) {
17
17
 
@@ -204,7 +204,7 @@ jQuery.fn = jQuery.prototype = {
204
204
  selector: "",
205
205
 
206
206
  // The current version of jQuery being used
207
- jquery: "1.6",
207
+ jquery: "1.6.1",
208
208
 
209
209
  // The default length of a jQuery object is 0
210
210
  length: 0,
@@ -1055,7 +1055,7 @@ jQuery.extend({
1055
1055
  if ( jQuery.isFunction( fn ) ) {
1056
1056
  deferred[ handler ](function() {
1057
1057
  returned = fn.apply( this, arguments );
1058
- if ( jQuery.isFunction( returned.promise ) ) {
1058
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
1059
1059
  returned.promise().then( newDefer.resolve, newDefer.reject );
1060
1060
  } else {
1061
1061
  newDefer[ action ]( returned );
@@ -1137,6 +1137,7 @@ jQuery.extend({
1137
1137
  jQuery.support = (function() {
1138
1138
 
1139
1139
  var div = document.createElement( "div" ),
1140
+ documentElement = document.documentElement,
1140
1141
  all,
1141
1142
  a,
1142
1143
  select,
@@ -1284,7 +1285,7 @@ jQuery.support = (function() {
1284
1285
  body.style[ i ] = bodyStyle[ i ];
1285
1286
  }
1286
1287
  body.appendChild( div );
1287
- document.documentElement.appendChild( body );
1288
+ documentElement.insertBefore( body, documentElement.firstChild );
1288
1289
 
1289
1290
  // Check if a disconnected checkbox will retain its checked
1290
1291
  // value of true after appended to the DOM (IE6/7)
@@ -1339,12 +1340,12 @@ jQuery.support = (function() {
1339
1340
  marginDiv.style.marginRight = "0";
1340
1341
  div.appendChild( marginDiv );
1341
1342
  support.reliableMarginRight =
1342
- ( parseInt( document.defaultView.getComputedStyle( marginDiv, null ).marginRight, 10 ) || 0 ) === 0;
1343
+ ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
1343
1344
  }
1344
1345
 
1345
1346
  // Remove the body element we added
1346
1347
  body.innerHTML = "";
1347
- document.documentElement.removeChild( body );
1348
+ documentElement.removeChild( body );
1348
1349
 
1349
1350
  // Technique from Juriy Zaytsev
1350
1351
  // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
@@ -1475,7 +1476,7 @@ jQuery.extend({
1475
1476
  }
1476
1477
 
1477
1478
  if ( data !== undefined ) {
1478
- thisCache[ name ] = data;
1479
+ thisCache[ jQuery.camelCase( name ) ] = data;
1479
1480
  }
1480
1481
 
1481
1482
  // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
@@ -1485,7 +1486,7 @@ jQuery.extend({
1485
1486
  return thisCache[ internalKey ] && thisCache[ internalKey ].events;
1486
1487
  }
1487
1488
 
1488
- return getByName ? thisCache[ name ] : thisCache;
1489
+ return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
1489
1490
  },
1490
1491
 
1491
1492
  removeData: function( elem, name, pvt /* Internal Use Only */ ) {
@@ -1661,7 +1662,7 @@ function dataAttr( elem, key, data ) {
1661
1662
  // If nothing was found internally, try to fetch any
1662
1663
  // data from the HTML5 data-* attribute
1663
1664
  if ( data === undefined && elem.nodeType === 1 ) {
1664
- name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
1665
+ var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
1665
1666
 
1666
1667
  data = elem.getAttribute( name );
1667
1668
 
@@ -1850,7 +1851,8 @@ jQuery.fn.extend({
1850
1851
  count = 1,
1851
1852
  deferDataKey = type + "defer",
1852
1853
  queueDataKey = type + "queue",
1853
- markDataKey = type + "mark";
1854
+ markDataKey = type + "mark",
1855
+ tmp;
1854
1856
  function resolve() {
1855
1857
  if ( !( --count ) ) {
1856
1858
  defer.resolveWith( elements, [ elements ] );
@@ -1879,9 +1881,9 @@ var rclass = /[\n\t\r]/g,
1879
1881
  rtype = /^(?:button|input)$/i,
1880
1882
  rfocusable = /^(?:button|input|object|select|textarea)$/i,
1881
1883
  rclickable = /^a(?:rea)?$/i,
1882
- rspecial = /^(?:data-|aria-)/,
1884
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
1883
1885
  rinvalidChar = /\:/,
1884
- formHook;
1886
+ formHook, boolHook;
1885
1887
 
1886
1888
  jQuery.fn.extend({
1887
1889
  attr: function( name, value ) {
@@ -1899,6 +1901,7 @@ jQuery.fn.extend({
1899
1901
  },
1900
1902
 
1901
1903
  removeProp: function( name ) {
1904
+ name = jQuery.propFix[ name ] || name;
1902
1905
  return this.each(function() {
1903
1906
  // try/catch handles cases where IE balks (such as removing a property on window)
1904
1907
  try {
@@ -2072,7 +2075,7 @@ jQuery.fn.extend({
2072
2075
  hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
2073
2076
 
2074
2077
  // If set returns undefined, fall back to normal setting
2075
- if ( !hooks || ("set" in hooks && hooks.set( this, val, "value" ) === undefined) ) {
2078
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
2076
2079
  this.value = val;
2077
2080
  }
2078
2081
  });
@@ -2091,7 +2094,8 @@ jQuery.extend({
2091
2094
  },
2092
2095
  select: {
2093
2096
  get: function( elem ) {
2094
- var index = elem.selectedIndex,
2097
+ var value,
2098
+ index = elem.selectedIndex,
2095
2099
  values = [],
2096
2100
  options = elem.options,
2097
2101
  one = elem.type === "select-one";
@@ -2158,8 +2162,7 @@ jQuery.extend({
2158
2162
 
2159
2163
  attrFix: {
2160
2164
  // Always normalize to ensure hook usage
2161
- tabindex: "tabIndex",
2162
- readonly: "readOnly"
2165
+ tabindex: "tabIndex"
2163
2166
  },
2164
2167
 
2165
2168
  attr: function( elem, name, value, pass ) {
@@ -2173,23 +2176,36 @@ jQuery.extend({
2173
2176
  if ( pass && name in jQuery.attrFn ) {
2174
2177
  return jQuery( elem )[ name ]( value );
2175
2178
  }
2176
-
2179
+
2180
+ // Fallback to prop when attributes are not supported
2181
+ if ( !("getAttribute" in elem) ) {
2182
+ return jQuery.prop( elem, name, value );
2183
+ }
2184
+
2177
2185
  var ret, hooks,
2178
2186
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2179
-
2187
+
2180
2188
  // Normalize the name if needed
2181
2189
  name = notxml && jQuery.attrFix[ name ] || name;
2182
2190
 
2183
- // Get the appropriate hook, or the formHook
2184
- // if getSetAttribute is not supported and we have form objects in IE6/7
2185
- hooks = jQuery.attrHooks[ name ] ||
2186
- ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ?
2187
- formHook :
2188
- undefined );
2191
+ hooks = jQuery.attrHooks[ name ];
2192
+
2193
+ if ( !hooks ) {
2194
+ // Use boolHook for boolean attributes
2195
+ if ( rboolean.test( name ) &&
2196
+ (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
2197
+
2198
+ hooks = boolHook;
2199
+
2200
+ // Use formHook for forms and if the name contains certain characters
2201
+ } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
2202
+ hooks = formHook;
2203
+ }
2204
+ }
2189
2205
 
2190
2206
  if ( value !== undefined ) {
2191
2207
 
2192
- if ( value === null || (value === false && !rspecial.test( name )) ) {
2208
+ if ( value === null ) {
2193
2209
  jQuery.removeAttr( elem, name );
2194
2210
  return undefined;
2195
2211
 
@@ -2197,34 +2213,26 @@ jQuery.extend({
2197
2213
  return ret;
2198
2214
 
2199
2215
  } else {
2200
-
2201
- // Set boolean attributes to the same name
2202
- if ( value === true && !rspecial.test( name ) ) {
2203
- value = name;
2204
- }
2205
-
2206
2216
  elem.setAttribute( name, "" + value );
2207
2217
  return value;
2208
2218
  }
2209
2219
 
2210
- } else {
2211
-
2212
- if ( hooks && "get" in hooks && notxml ) {
2213
- return hooks.get( elem, name );
2220
+ } else if ( hooks && "get" in hooks && notxml ) {
2221
+ return hooks.get( elem, name );
2214
2222
 
2215
- } else {
2223
+ } else {
2216
2224
 
2217
- ret = elem.getAttribute( name );
2225
+ ret = elem.getAttribute( name );
2218
2226
 
2219
- // Non-existent attributes return null, we normalize to undefined
2220
- return ret === null ?
2221
- undefined :
2222
- ret;
2223
- }
2227
+ // Non-existent attributes return null, we normalize to undefined
2228
+ return ret === null ?
2229
+ undefined :
2230
+ ret;
2224
2231
  }
2225
2232
  },
2226
-
2233
+
2227
2234
  removeAttr: function( elem, name ) {
2235
+ var propName;
2228
2236
  if ( elem.nodeType === 1 ) {
2229
2237
  name = jQuery.attrFix[ name ] || name;
2230
2238
 
@@ -2235,6 +2243,11 @@ jQuery.extend({
2235
2243
  jQuery.attr( elem, name, "" );
2236
2244
  elem.removeAttributeNode( elem.getAttributeNode( name ) );
2237
2245
  }
2246
+
2247
+ // Set corresponding property to false for boolean attributes
2248
+ if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
2249
+ elem[ propName ] = false;
2250
+ }
2238
2251
  }
2239
2252
  },
2240
2253
 
@@ -2248,7 +2261,7 @@ jQuery.extend({
2248
2261
  // Setting the type on a radio button after the value resets the value in IE6-9
2249
2262
  // Reset value to it's default in case type is set after value
2250
2263
  // This is for element creation
2251
- var val = elem.getAttribute("value");
2264
+ var val = elem.value;
2252
2265
  elem.setAttribute( "type", value );
2253
2266
  if ( val ) {
2254
2267
  elem.value = val;
@@ -2271,37 +2284,50 @@ jQuery.extend({
2271
2284
  }
2272
2285
  }
2273
2286
  },
2274
-
2275
- propFix: {},
2287
+
2288
+ propFix: {
2289
+ tabindex: "tabIndex",
2290
+ readonly: "readOnly",
2291
+ "for": "htmlFor",
2292
+ "class": "className",
2293
+ maxlength: "maxLength",
2294
+ cellspacing: "cellSpacing",
2295
+ cellpadding: "cellPadding",
2296
+ rowspan: "rowSpan",
2297
+ colspan: "colSpan",
2298
+ usemap: "useMap",
2299
+ frameborder: "frameBorder",
2300
+ contenteditable: "contentEditable"
2301
+ },
2276
2302
 
2277
2303
  prop: function( elem, name, value ) {
2278
2304
  var nType = elem.nodeType;
2279
-
2305
+
2280
2306
  // don't get/set properties on text, comment and attribute nodes
2281
2307
  if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
2282
2308
  return undefined;
2283
2309
  }
2284
-
2310
+
2285
2311
  var ret, hooks,
2286
2312
  notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
2287
-
2313
+
2288
2314
  // Try to normalize/fix the name
2289
2315
  name = notxml && jQuery.propFix[ name ] || name;
2290
2316
 
2291
2317
  hooks = jQuery.propHooks[ name ];
2292
-
2318
+
2293
2319
  if ( value !== undefined ) {
2294
2320
  if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
2295
2321
  return ret;
2296
-
2322
+
2297
2323
  } else {
2298
2324
  return (elem[ name ] = value);
2299
2325
  }
2300
-
2326
+
2301
2327
  } else {
2302
2328
  if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
2303
2329
  return ret;
2304
-
2330
+
2305
2331
  } else {
2306
2332
  return elem[ name ];
2307
2333
  }
@@ -2311,30 +2337,65 @@ jQuery.extend({
2311
2337
  propHooks: {}
2312
2338
  });
2313
2339
 
2340
+ // Hook for boolean attributes
2341
+ boolHook = {
2342
+ get: function( elem, name ) {
2343
+ // Align boolean attributes with corresponding properties
2344
+ return elem[ jQuery.propFix[ name ] || name ] ?
2345
+ name.toLowerCase() :
2346
+ undefined;
2347
+ },
2348
+ set: function( elem, value, name ) {
2349
+ var propName;
2350
+ if ( value === false ) {
2351
+ // Remove boolean attributes when set to false
2352
+ jQuery.removeAttr( elem, name );
2353
+ } else {
2354
+ // value is true since we know at this point it's type boolean and not false
2355
+ // Set boolean attributes to the same name and set the DOM property
2356
+ propName = jQuery.propFix[ name ] || name;
2357
+ if ( propName in elem ) {
2358
+ // Only set the IDL specifically if it already exists on the element
2359
+ elem[ propName ] = value;
2360
+ }
2361
+
2362
+ elem.setAttribute( name, name.toLowerCase() );
2363
+ }
2364
+ return name;
2365
+ }
2366
+ };
2367
+
2368
+ // Use the value property for back compat
2369
+ // Use the formHook for button elements in IE6/7 (#1954)
2370
+ jQuery.attrHooks.value = {
2371
+ get: function( elem, name ) {
2372
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2373
+ return formHook.get( elem, name );
2374
+ }
2375
+ return elem.value;
2376
+ },
2377
+ set: function( elem, value, name ) {
2378
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
2379
+ return formHook.set( elem, value, name );
2380
+ }
2381
+ // Does not return so that setAttribute is also used
2382
+ elem.value = value;
2383
+ }
2384
+ };
2385
+
2314
2386
  // IE6/7 do not support getting/setting some attributes with get/setAttribute
2315
2387
  if ( !jQuery.support.getSetAttribute ) {
2316
- jQuery.attrFix = jQuery.extend( jQuery.attrFix, {
2317
- "for": "htmlFor",
2318
- "class": "className",
2319
- maxlength: "maxLength",
2320
- cellspacing: "cellSpacing",
2321
- cellpadding: "cellPadding",
2322
- rowspan: "rowSpan",
2323
- colspan: "colSpan",
2324
- usemap: "useMap",
2325
- frameborder: "frameBorder"
2326
- });
2388
+
2389
+ // propFix is more comprehensive and contains all fixes
2390
+ jQuery.attrFix = jQuery.propFix;
2327
2391
 
2328
2392
  // Use this for any attribute on a form in IE6/7
2329
- formHook = jQuery.attrHooks.name = jQuery.attrHooks.value = jQuery.valHooks.button = {
2393
+ formHook = jQuery.attrHooks.name = jQuery.valHooks.button = {
2330
2394
  get: function( elem, name ) {
2331
2395
  var ret;
2332
- if ( name === "value" && !jQuery.nodeName( elem, "button" ) ) {
2333
- return elem.getAttribute( name );
2334
- }
2335
2396
  ret = elem.getAttributeNode( name );
2336
- // Return undefined if not specified instead of empty string
2337
- return ret && ret.specified ?
2397
+ // Return undefined if nodeValue is empty string
2398
+ return ret && ret.nodeValue !== "" ?
2338
2399
  ret.nodeValue :
2339
2400
  undefined;
2340
2401
  },
@@ -3086,6 +3147,9 @@ var withinElement = function( event ) {
3086
3147
  // Check if mouse(over|out) are still within the same parent element
3087
3148
  var parent = event.relatedTarget;
3088
3149
 
3150
+ // set the correct event type
3151
+ event.type = event.data;
3152
+
3089
3153
  // Firefox sometimes assigns relatedTarget a XUL element
3090
3154
  // which we cannot access the parentNode property of
3091
3155
  try {
@@ -3095,15 +3159,13 @@ var withinElement = function( event ) {
3095
3159
  if ( parent && parent !== document && !parent.parentNode ) {
3096
3160
  return;
3097
3161
  }
3162
+
3098
3163
  // Traverse up the tree
3099
3164
  while ( parent && parent !== this ) {
3100
3165
  parent = parent.parentNode;
3101
3166
  }
3102
3167
 
3103
3168
  if ( parent !== this ) {
3104
- // set the correct event type
3105
- event.type = event.data;
3106
-
3107
3169
  // handle event if we actually just moused on to a non sub-element
3108
3170
  jQuery.event.handle.apply( this, arguments );
3109
3171
  }
@@ -4291,7 +4353,8 @@ var Expr = Sizzle.selectors = {
4291
4353
  },
4292
4354
 
4293
4355
  reset: function( elem ) {
4294
- return elem.nodeName.toLowerCase() === "input" && "reset" === elem.type;
4356
+ var name = elem.nodeName.toLowerCase();
4357
+ return (name === "input" || name === "button") && "reset" === elem.type;
4295
4358
  },
4296
4359
 
4297
4360
  button: function( elem ) {
@@ -4557,6 +4620,16 @@ if ( document.documentElement.compareDocumentPosition ) {
4557
4620
 
4558
4621
  } else {
4559
4622
  sortOrder = function( a, b ) {
4623
+ // The nodes are identical, we can exit early
4624
+ if ( a === b ) {
4625
+ hasDuplicate = true;
4626
+ return 0;
4627
+
4628
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
4629
+ } else if ( a.sourceIndex && b.sourceIndex ) {
4630
+ return a.sourceIndex - b.sourceIndex;
4631
+ }
4632
+
4560
4633
  var al, bl,
4561
4634
  ap = [],
4562
4635
  bp = [],
@@ -4564,13 +4637,8 @@ if ( document.documentElement.compareDocumentPosition ) {
4564
4637
  bup = b.parentNode,
4565
4638
  cur = aup;
4566
4639
 
4567
- // The nodes are identical, we can exit early
4568
- if ( a === b ) {
4569
- hasDuplicate = true;
4570
- return 0;
4571
-
4572
4640
  // If the nodes are siblings (or identical) we can do a quick check
4573
- } else if ( aup === bup ) {
4641
+ if ( aup === bup ) {
4574
4642
  return siblingCheck( a, b );
4575
4643
 
4576
4644
  // If no parents were found then the nodes are disconnected
@@ -5394,6 +5462,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
5394
5462
  // checked="checked" or checked
5395
5463
  rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5396
5464
  rscriptType = /\/(java|ecma)script/i,
5465
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
5397
5466
  wrapMap = {
5398
5467
  option: [ 1, "<select multiple='multiple'>", "</select>" ],
5399
5468
  legend: [ 1, "<fieldset>", "</fieldset>" ],
@@ -5884,7 +5953,7 @@ jQuery.each({
5884
5953
  function getAll( elem ) {
5885
5954
  if ( "getElementsByTagName" in elem ) {
5886
5955
  return elem.getElementsByTagName( "*" );
5887
-
5956
+
5888
5957
  } else if ( "querySelectorAll" in elem ) {
5889
5958
  return elem.querySelectorAll( "*" );
5890
5959
 
@@ -5966,7 +6035,7 @@ jQuery.extend({
5966
6035
  context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
5967
6036
  }
5968
6037
 
5969
- var ret = [];
6038
+ var ret = [], j;
5970
6039
 
5971
6040
  for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
5972
6041
  if ( typeof elem === "number" ) {
@@ -6012,7 +6081,7 @@ jQuery.extend({
6012
6081
  div.childNodes :
6013
6082
  [];
6014
6083
 
6015
- for ( var j = tbody.length - 1; j >= 0 ; --j ) {
6084
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
6016
6085
  if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
6017
6086
  tbody[ j ].parentNode.removeChild( tbody[ j ] );
6018
6087
  }
@@ -6033,8 +6102,8 @@ jQuery.extend({
6033
6102
  var len;
6034
6103
  if ( !jQuery.support.appendChecked ) {
6035
6104
  if ( elem[0] && typeof (len = elem.length) === "number" ) {
6036
- for ( i = 0; i < len; i++ ) {
6037
- findInputs( elem[i] );
6105
+ for ( j = 0; j < len; j++ ) {
6106
+ findInputs( elem[j] );
6038
6107
  }
6039
6108
  } else {
6040
6109
  findInputs( elem );
@@ -6122,7 +6191,7 @@ function evalScript( i, elem ) {
6122
6191
  dataType: "script"
6123
6192
  });
6124
6193
  } else {
6125
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
6194
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
6126
6195
  }
6127
6196
 
6128
6197
  if ( elem.parentNode ) {
@@ -7999,6 +8068,9 @@ jQuery.fn.extend({
7999
8068
  return this.each( optall.complete, [ false ] );
8000
8069
  }
8001
8070
 
8071
+ // Do not change referenced properties as per-property easing will be lost
8072
+ prop = jQuery.extend( {}, prop );
8073
+
8002
8074
  return this[ optall.queue === false ? "each" : "queue" ](function() {
8003
8075
  // XXX 'this' does not always have a nodeName when running the
8004
8076
  // test suite
@@ -8007,7 +8079,7 @@ jQuery.fn.extend({
8007
8079
  jQuery._mark( this );
8008
8080
  }
8009
8081
 
8010
- var opt = jQuery.extend({}, optall),
8082
+ var opt = jQuery.extend( {}, optall ),
8011
8083
  isElement = this.nodeType === 1,
8012
8084
  hidden = isElement && jQuery(this).is(":hidden"),
8013
8085
  name, val, p,
@@ -8026,10 +8098,18 @@ jQuery.fn.extend({
8026
8098
  delete prop[ p ];
8027
8099
  }
8028
8100
 
8029
- val = prop[name];
8101
+ val = prop[ name ];
8102
+
8103
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
8104
+ if ( jQuery.isArray( val ) ) {
8105
+ opt.animatedProperties[ name ] = val[ 1 ];
8106
+ val = prop[ name ] = val[ 0 ];
8107
+ } else {
8108
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
8109
+ }
8030
8110
 
8031
8111
  if ( val === "hide" && hidden || val === "show" && !hidden ) {
8032
- return opt.complete.call(this);
8112
+ return opt.complete.call( this );
8033
8113
  }
8034
8114
 
8035
8115
  if ( isElement && ( name === "height" || name === "width" ) ) {
@@ -8048,7 +8128,7 @@ jQuery.fn.extend({
8048
8128
  this.style.display = "inline-block";
8049
8129
 
8050
8130
  } else {
8051
- display = defaultDisplay(this.nodeName);
8131
+ display = defaultDisplay( this.nodeName );
8052
8132
 
8053
8133
  // inline-level elements accept inline-block;
8054
8134
  // block-level elements need to be inline with layout
@@ -8062,11 +8142,6 @@ jQuery.fn.extend({
8062
8142
  }
8063
8143
  }
8064
8144
  }
8065
-
8066
- // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
8067
- opt.animatedProperties[name] = jQuery.isArray( val ) ?
8068
- val[1]:
8069
- opt.specialEasing && opt.specialEasing[name] || opt.easing || 'swing';
8070
8145
  }
8071
8146
 
8072
8147
  if ( opt.overflow != null ) {
@@ -8075,19 +8150,18 @@ jQuery.fn.extend({
8075
8150
 
8076
8151
  for ( p in prop ) {
8077
8152
  e = new jQuery.fx( this, opt, p );
8078
-
8079
- val = prop[p];
8153
+ val = prop[ p ];
8080
8154
 
8081
8155
  if ( rfxtypes.test(val) ) {
8082
8156
  e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
8083
8157
 
8084
8158
  } else {
8085
- parts = rfxnum.exec(val);
8159
+ parts = rfxnum.exec( val );
8086
8160
  start = e.cur();
8087
8161
 
8088
8162
  if ( parts ) {
8089
8163
  end = parseFloat( parts[2] );
8090
- unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" );
8164
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
8091
8165
 
8092
8166
  // We need to compute starting value
8093
8167
  if ( unit !== "px" ) {
@@ -8098,7 +8172,7 @@ jQuery.fn.extend({
8098
8172
 
8099
8173
  // If a +=/-= token was provided, we're doing a relative animation
8100
8174
  if ( parts[1] ) {
8101
- end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
8175
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
8102
8176
  }
8103
8177
 
8104
8178
  e.custom( start, end, unit );
@@ -8126,7 +8200,6 @@ jQuery.fn.extend({
8126
8200
  if ( !gotoEnd ) {
8127
8201
  jQuery._unmark( true, this );
8128
8202
  }
8129
- // go in reverse order so anything added to the queue during the loop is ignored
8130
8203
  while ( i-- ) {
8131
8204
  if ( timers[i].elem === this ) {
8132
8205
  if (gotoEnd) {
@@ -8374,10 +8447,10 @@ jQuery.fx.prototype = {
8374
8447
  this.now = t;
8375
8448
  } else {
8376
8449
  n = t - this.startTime;
8377
-
8378
8450
  this.state = n / options.duration;
8451
+
8379
8452
  // Perform the easing function, defaults to swing
8380
- this.pos = jQuery.easing[options.animatedProperties[this.prop]](this.state, n, 0, 1, options.duration);
8453
+ this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
8381
8454
  this.now = this.start + ((this.end - this.start) * this.pos);
8382
8455
  }
8383
8456
  // Perform the next step of the animation
@@ -8390,11 +8463,9 @@ jQuery.fx.prototype = {
8390
8463
 
8391
8464
  jQuery.extend( jQuery.fx, {
8392
8465
  tick: function() {
8393
- var timers = jQuery.timers,
8394
- i = timers.length;
8395
- while ( i-- ) {
8466
+ for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
8396
8467
  if ( !timers[i]() ) {
8397
- timers.splice(i, 1);
8468
+ timers.splice(i--, 1);
8398
8469
  }
8399
8470
  }
8400
8471
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jquery-source
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.6.0
5
+ version: 1.6.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Daniel X. Moore