jquery-rails 4.0.2 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jquery-rails might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 098cbce7d8932fe6ddc4329b4c37abc49c1b64c5
4
- data.tar.gz: 86fb452b7a5b03b3de792b40135577173a9dafcd
3
+ metadata.gz: cbce5dcfc21bb4fb2839710ac0e05159888322b0
4
+ data.tar.gz: fc45d73e7fcbb5a41d0dcd63c388f77ac4c4e718
5
5
  SHA512:
6
- metadata.gz: f15f3179cc4bd73e7f4ea6bf7d5b7fde9a6da8bcf6c1e7a4c3453ba3cf5f1f23bbce403372e481f040008ee61b40e524e13ff9a4038b0fd277b70f6164fd6dc4
7
- data.tar.gz: 80abee9bbbea6e53bbf92f078685bc251479fb7ee7cfdf56be066b7e88f2d127b33a87b5310078b612c2bc1a7116eeae5f4f93ad0953b48f202c3dbafc7e2a3a
6
+ metadata.gz: c0a6d1bd050ea314a9ba5fa5ca62064b915ea5d9587b2387c054e0ba180fb1c9d5b2b5ab4364655eda865a6cafd3d7a0ff2e277dece297a7afd435b68be6a612
7
+ data.tar.gz: f04822fcbc830e85d4187290efce0347067ab70474e9c7aa4c56d93fdf8c7390eae158f8970b7ab853fc05325375c7f4d2934a029f74f2df210fcbef37fe29e2
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ task :guard_version do
21
21
  check_version('jquery2.js', /jQuery JavaScript Library v([\S]+)/, 'JQUERY_2_VERSION')
22
22
  end
23
23
 
24
+ desc "Update jQuery versions"
24
25
  task :update_jquery do
25
26
  def download_jquery(filename, version)
26
27
  suffix = "-#{version}"
@@ -38,6 +39,7 @@ task :update_jquery do
38
39
  puts "\e[32mDone!\e[0m"
39
40
  end
40
41
 
42
+ desc "Update jQuery UJS version"
41
43
  task :update_jquery_ujs do
42
44
  puts "Downloading jquery_ujs.js"
43
45
  puts `curl -o vendor/assets/javascripts/jquery_ujs.js https://raw.githubusercontent.com/rails/jquery-ujs/v#{Jquery::Rails::JQUERY_UJS_VERSION}/src/rails.js`
data/VERSIONS.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  | Gem | jQuery | jQuery UJS | jQuery UI |
4
4
  |--------|--------|------------| ----------|
5
+ | 4.0.3 | 1.11.2 & 2.1.3 | 1.0.3 | - |
5
6
  | 4.0.2 | - | - | - |
6
7
  | 4.0.1 | - | - | - |
7
8
  | 4.0.0 | 1.11.1 & 2.1.1 | 1.0.2 | - |
@@ -1,8 +1,8 @@
1
1
  module Jquery
2
2
  module Rails
3
- VERSION = "4.0.2"
4
- JQUERY_VERSION = "1.11.1"
5
- JQUERY_2_VERSION = "2.1.1"
6
- JQUERY_UJS_VERSION = "1.0.2"
3
+ VERSION = "4.0.3"
4
+ JQUERY_VERSION = "1.11.2"
5
+ JQUERY_2_VERSION = "2.1.3"
6
+ JQUERY_UJS_VERSION = "1.0.3"
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jQuery JavaScript Library v1.11.1
2
+ * jQuery JavaScript Library v1.11.2
3
3
  * http://jquery.com/
4
4
  *
5
5
  * Includes Sizzle.js
@@ -9,7 +9,7 @@
9
9
  * Released under the MIT license
10
10
  * http://jquery.org/license
11
11
  *
12
- * Date: 2014-05-01T17:42Z
12
+ * Date: 2014-12-17T15:27Z
13
13
  */
14
14
 
15
15
  (function( global, factory ) {
@@ -64,7 +64,7 @@ var support = {};
64
64
 
65
65
 
66
66
  var
67
- version = "1.11.1",
67
+ version = "1.11.2",
68
68
 
69
69
  // Define a local copy of jQuery
70
70
  jQuery = function( selector, context ) {
@@ -269,7 +269,8 @@ jQuery.extend({
269
269
  // parseFloat NaNs numeric-cast false positives (null|true|false|"")
270
270
  // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
271
271
  // subtraction forces infinities to NaN
272
- return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
272
+ // adding 1 corrects loss of precision from parseFloat (#15100)
273
+ return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
273
274
  },
274
275
 
275
276
  isEmptyObject: function( obj ) {
@@ -584,14 +585,14 @@ function isArraylike( obj ) {
584
585
  }
585
586
  var Sizzle =
586
587
  /*!
587
- * Sizzle CSS Selector Engine v1.10.19
588
+ * Sizzle CSS Selector Engine v2.2.0-pre
588
589
  * http://sizzlejs.com/
589
590
  *
590
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
591
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
591
592
  * Released under the MIT license
592
593
  * http://jquery.org/license
593
594
  *
594
- * Date: 2014-04-18
595
+ * Date: 2014-12-16
595
596
  */
596
597
  (function( window ) {
597
598
 
@@ -618,7 +619,7 @@ var i,
618
619
  contains,
619
620
 
620
621
  // Instance-specific data
621
- expando = "sizzle" + -(new Date()),
622
+ expando = "sizzle" + 1 * new Date(),
622
623
  preferredDoc = window.document,
623
624
  dirruns = 0,
624
625
  done = 0,
@@ -633,7 +634,6 @@ var i,
633
634
  },
634
635
 
635
636
  // General-purpose constants
636
- strundefined = typeof undefined,
637
637
  MAX_NEGATIVE = 1 << 31,
638
638
 
639
639
  // Instance methods
@@ -643,12 +643,13 @@ var i,
643
643
  push_native = arr.push,
644
644
  push = arr.push,
645
645
  slice = arr.slice,
646
- // Use a stripped-down indexOf if we can't use a native one
647
- indexOf = arr.indexOf || function( elem ) {
646
+ // Use a stripped-down indexOf as it's faster than native
647
+ // http://jsperf.com/thor-indexof-vs-for/5
648
+ indexOf = function( list, elem ) {
648
649
  var i = 0,
649
- len = this.length;
650
+ len = list.length;
650
651
  for ( ; i < len; i++ ) {
651
- if ( this[i] === elem ) {
652
+ if ( list[i] === elem ) {
652
653
  return i;
653
654
  }
654
655
  }
@@ -688,6 +689,7 @@ var i,
688
689
  ")\\)|)",
689
690
 
690
691
  // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
692
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
691
693
  rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
692
694
 
693
695
  rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
@@ -739,6 +741,14 @@ var i,
739
741
  String.fromCharCode( high + 0x10000 ) :
740
742
  // Supplemental Plane codepoint (surrogate pair)
741
743
  String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
744
+ },
745
+
746
+ // Used for iframes
747
+ // See setDocument()
748
+ // Removing the function wrapper causes a "Permission Denied"
749
+ // error in IE
750
+ unloadHandler = function() {
751
+ setDocument();
742
752
  };
743
753
 
744
754
  // Optimize for push.apply( _, NodeList )
@@ -781,19 +791,18 @@ function Sizzle( selector, context, results, seed ) {
781
791
 
782
792
  context = context || document;
783
793
  results = results || [];
794
+ nodeType = context.nodeType;
784
795
 
785
- if ( !selector || typeof selector !== "string" ) {
786
- return results;
787
- }
796
+ if ( typeof selector !== "string" || !selector ||
797
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
788
798
 
789
- if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
790
- return [];
799
+ return results;
791
800
  }
792
801
 
793
- if ( documentIsHTML && !seed ) {
802
+ if ( !seed && documentIsHTML ) {
794
803
 
795
- // Shortcuts
796
- if ( (match = rquickExpr.exec( selector )) ) {
804
+ // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
805
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
797
806
  // Speed-up: Sizzle("#ID")
798
807
  if ( (m = match[1]) ) {
799
808
  if ( nodeType === 9 ) {
@@ -825,7 +834,7 @@ function Sizzle( selector, context, results, seed ) {
825
834
  return results;
826
835
 
827
836
  // Speed-up: Sizzle(".CLASS")
828
- } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
837
+ } else if ( (m = match[3]) && support.getElementsByClassName ) {
829
838
  push.apply( results, context.getElementsByClassName( m ) );
830
839
  return results;
831
840
  }
@@ -835,7 +844,7 @@ function Sizzle( selector, context, results, seed ) {
835
844
  if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
836
845
  nid = old = expando;
837
846
  newContext = context;
838
- newSelector = nodeType === 9 && selector;
847
+ newSelector = nodeType !== 1 && selector;
839
848
 
840
849
  // qSA works strangely on Element-rooted queries
841
850
  // We can work around this by specifying an extra ID on the root
@@ -1022,7 +1031,7 @@ function createPositionalPseudo( fn ) {
1022
1031
  * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1023
1032
  */
1024
1033
  function testContext( context ) {
1025
- return context && typeof context.getElementsByTagName !== strundefined && context;
1034
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
1026
1035
  }
1027
1036
 
1028
1037
  // Expose support vars for convenience
@@ -1046,9 +1055,8 @@ isXML = Sizzle.isXML = function( elem ) {
1046
1055
  * @returns {Object} Returns the current document
1047
1056
  */
1048
1057
  setDocument = Sizzle.setDocument = function( node ) {
1049
- var hasCompare,
1050
- doc = node ? node.ownerDocument || node : preferredDoc,
1051
- parent = doc.defaultView;
1058
+ var hasCompare, parent,
1059
+ doc = node ? node.ownerDocument || node : preferredDoc;
1052
1060
 
1053
1061
  // If no document and documentElement is available, return
1054
1062
  if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
@@ -1058,9 +1066,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1058
1066
  // Set our document
1059
1067
  document = doc;
1060
1068
  docElem = doc.documentElement;
1061
-
1062
- // Support tests
1063
- documentIsHTML = !isXML( doc );
1069
+ parent = doc.defaultView;
1064
1070
 
1065
1071
  // Support: IE>8
1066
1072
  // If iframe document is assigned to "document" variable and if iframe has been reloaded,
@@ -1069,21 +1075,22 @@ setDocument = Sizzle.setDocument = function( node ) {
1069
1075
  if ( parent && parent !== parent.top ) {
1070
1076
  // IE11 does not have attachEvent, so all must suffer
1071
1077
  if ( parent.addEventListener ) {
1072
- parent.addEventListener( "unload", function() {
1073
- setDocument();
1074
- }, false );
1078
+ parent.addEventListener( "unload", unloadHandler, false );
1075
1079
  } else if ( parent.attachEvent ) {
1076
- parent.attachEvent( "onunload", function() {
1077
- setDocument();
1078
- });
1080
+ parent.attachEvent( "onunload", unloadHandler );
1079
1081
  }
1080
1082
  }
1081
1083
 
1084
+ /* Support tests
1085
+ ---------------------------------------------------------------------- */
1086
+ documentIsHTML = !isXML( doc );
1087
+
1082
1088
  /* Attributes
1083
1089
  ---------------------------------------------------------------------- */
1084
1090
 
1085
1091
  // Support: IE<8
1086
- // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
1092
+ // Verify that getAttribute really returns attributes and not properties
1093
+ // (excepting IE8 booleans)
1087
1094
  support.attributes = assert(function( div ) {
1088
1095
  div.className = "i";
1089
1096
  return !div.getAttribute("className");
@@ -1098,17 +1105,8 @@ setDocument = Sizzle.setDocument = function( node ) {
1098
1105
  return !div.getElementsByTagName("*").length;
1099
1106
  });
1100
1107
 
1101
- // Check if getElementsByClassName can be trusted
1102
- support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
1103
- div.innerHTML = "<div class='a'></div><div class='a i'></div>";
1104
-
1105
- // Support: Safari<4
1106
- // Catch class over-caching
1107
- div.firstChild.className = "i";
1108
- // Support: Opera<10
1109
- // Catch gEBCN failure to find non-leading classes
1110
- return div.getElementsByClassName("i").length === 2;
1111
- });
1108
+ // Support: IE<9
1109
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
1112
1110
 
1113
1111
  // Support: IE<10
1114
1112
  // Check if getElementById returns elements by name
@@ -1122,7 +1120,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1122
1120
  // ID find and filter
1123
1121
  if ( support.getById ) {
1124
1122
  Expr.find["ID"] = function( id, context ) {
1125
- if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
1123
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1126
1124
  var m = context.getElementById( id );
1127
1125
  // Check parentNode to catch when Blackberry 4.6 returns
1128
1126
  // nodes that are no longer in the document #6963
@@ -1143,7 +1141,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1143
1141
  Expr.filter["ID"] = function( id ) {
1144
1142
  var attrId = id.replace( runescape, funescape );
1145
1143
  return function( elem ) {
1146
- var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
1144
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
1147
1145
  return node && node.value === attrId;
1148
1146
  };
1149
1147
  };
@@ -1152,14 +1150,20 @@ setDocument = Sizzle.setDocument = function( node ) {
1152
1150
  // Tag
1153
1151
  Expr.find["TAG"] = support.getElementsByTagName ?
1154
1152
  function( tag, context ) {
1155
- if ( typeof context.getElementsByTagName !== strundefined ) {
1153
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
1156
1154
  return context.getElementsByTagName( tag );
1155
+
1156
+ // DocumentFragment nodes don't have gEBTN
1157
+ } else if ( support.qsa ) {
1158
+ return context.querySelectorAll( tag );
1157
1159
  }
1158
1160
  } :
1161
+
1159
1162
  function( tag, context ) {
1160
1163
  var elem,
1161
1164
  tmp = [],
1162
1165
  i = 0,
1166
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1163
1167
  results = context.getElementsByTagName( tag );
1164
1168
 
1165
1169
  // Filter out possible comments
@@ -1177,7 +1181,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1177
1181
 
1178
1182
  // Class
1179
1183
  Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1180
- if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
1184
+ if ( documentIsHTML ) {
1181
1185
  return context.getElementsByClassName( className );
1182
1186
  }
1183
1187
  };
@@ -1206,13 +1210,15 @@ setDocument = Sizzle.setDocument = function( node ) {
1206
1210
  // setting a boolean content attribute,
1207
1211
  // since its presence should be enough
1208
1212
  // http://bugs.jquery.com/ticket/12359
1209
- div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
1213
+ docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
1214
+ "<select id='" + expando + "-\f]' msallowcapture=''>" +
1215
+ "<option selected=''></option></select>";
1210
1216
 
1211
1217
  // Support: IE8, Opera 11-12.16
1212
1218
  // Nothing should be selected when empty strings follow ^= or $= or *=
1213
1219
  // The test attribute must be unknown in Opera but "safe" for WinRT
1214
1220
  // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1215
- if ( div.querySelectorAll("[msallowclip^='']").length ) {
1221
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
1216
1222
  rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1217
1223
  }
1218
1224
 
@@ -1222,12 +1228,24 @@ setDocument = Sizzle.setDocument = function( node ) {
1222
1228
  rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1223
1229
  }
1224
1230
 
1231
+ // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
1232
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1233
+ rbuggyQSA.push("~=");
1234
+ }
1235
+
1225
1236
  // Webkit/Opera - :checked should return selected option elements
1226
1237
  // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1227
1238
  // IE8 throws error here and will not see later tests
1228
1239
  if ( !div.querySelectorAll(":checked").length ) {
1229
1240
  rbuggyQSA.push(":checked");
1230
1241
  }
1242
+
1243
+ // Support: Safari 8+, iOS 8+
1244
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
1245
+ // In-page `selector#id sibing-combinator selector` fails
1246
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
1247
+ rbuggyQSA.push(".#.+[+~]");
1248
+ }
1231
1249
  });
1232
1250
 
1233
1251
  assert(function( div ) {
@@ -1344,7 +1362,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1344
1362
 
1345
1363
  // Maintain original order
1346
1364
  return sortInput ?
1347
- ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1365
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1348
1366
  0;
1349
1367
  }
1350
1368
 
@@ -1371,7 +1389,7 @@ setDocument = Sizzle.setDocument = function( node ) {
1371
1389
  aup ? -1 :
1372
1390
  bup ? 1 :
1373
1391
  sortInput ?
1374
- ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1392
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1375
1393
  0;
1376
1394
 
1377
1395
  // If the nodes are siblings, we can do a quick check
@@ -1434,7 +1452,7 @@ Sizzle.matchesSelector = function( elem, expr ) {
1434
1452
  elem.document && elem.document.nodeType !== 11 ) {
1435
1453
  return ret;
1436
1454
  }
1437
- } catch(e) {}
1455
+ } catch (e) {}
1438
1456
  }
1439
1457
 
1440
1458
  return Sizzle( expr, document, null, [ elem ] ).length > 0;
@@ -1653,7 +1671,7 @@ Expr = Sizzle.selectors = {
1653
1671
  return pattern ||
1654
1672
  (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1655
1673
  classCache( className, function( elem ) {
1656
- return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
1674
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1657
1675
  });
1658
1676
  },
1659
1677
 
@@ -1675,7 +1693,7 @@ Expr = Sizzle.selectors = {
1675
1693
  operator === "^=" ? check && result.indexOf( check ) === 0 :
1676
1694
  operator === "*=" ? check && result.indexOf( check ) > -1 :
1677
1695
  operator === "$=" ? check && result.slice( -check.length ) === check :
1678
- operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
1696
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1679
1697
  operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1680
1698
  false;
1681
1699
  };
@@ -1795,7 +1813,7 @@ Expr = Sizzle.selectors = {
1795
1813
  matched = fn( seed, argument ),
1796
1814
  i = matched.length;
1797
1815
  while ( i-- ) {
1798
- idx = indexOf.call( seed, matched[i] );
1816
+ idx = indexOf( seed, matched[i] );
1799
1817
  seed[ idx ] = !( matches[ idx ] = matched[i] );
1800
1818
  }
1801
1819
  }) :
@@ -1834,6 +1852,8 @@ Expr = Sizzle.selectors = {
1834
1852
  function( elem, context, xml ) {
1835
1853
  input[0] = elem;
1836
1854
  matcher( input, null, xml, results );
1855
+ // Don't keep the element (issue #299)
1856
+ input[0] = null;
1837
1857
  return !results.pop();
1838
1858
  };
1839
1859
  }),
@@ -1845,6 +1865,7 @@ Expr = Sizzle.selectors = {
1845
1865
  }),
1846
1866
 
1847
1867
  "contains": markFunction(function( text ) {
1868
+ text = text.replace( runescape, funescape );
1848
1869
  return function( elem ) {
1849
1870
  return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
1850
1871
  };
@@ -2266,7 +2287,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
2266
2287
  i = matcherOut.length;
2267
2288
  while ( i-- ) {
2268
2289
  if ( (elem = matcherOut[i]) &&
2269
- (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
2290
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2270
2291
 
2271
2292
  seed[temp] = !(results[temp] = elem);
2272
2293
  }
@@ -2301,13 +2322,16 @@ function matcherFromTokens( tokens ) {
2301
2322
  return elem === checkContext;
2302
2323
  }, implicitRelative, true ),
2303
2324
  matchAnyContext = addCombinator( function( elem ) {
2304
- return indexOf.call( checkContext, elem ) > -1;
2325
+ return indexOf( checkContext, elem ) > -1;
2305
2326
  }, implicitRelative, true ),
2306
2327
  matchers = [ function( elem, context, xml ) {
2307
- return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2328
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2308
2329
  (checkContext = context).nodeType ?
2309
2330
  matchContext( elem, context, xml ) :
2310
2331
  matchAnyContext( elem, context, xml ) );
2332
+ // Avoid hanging onto element (issue #299)
2333
+ checkContext = null;
2334
+ return ret;
2311
2335
  } ];
2312
2336
 
2313
2337
  for ( ; i < len; i++ ) {
@@ -2557,7 +2581,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
2557
2581
  // Sort stability
2558
2582
  support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2559
2583
 
2560
- // Support: Chrome<14
2584
+ // Support: Chrome 14-35+
2561
2585
  // Always assume duplicates if they aren't passed to the comparison function
2562
2586
  support.detectDuplicates = !!hasDuplicate;
2563
2587
 
@@ -6115,7 +6139,14 @@ var getStyles, curCSS,
6115
6139
 
6116
6140
  if ( window.getComputedStyle ) {
6117
6141
  getStyles = function( elem ) {
6118
- return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
6142
+ // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
6143
+ // IE throws on elements created in popups
6144
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6145
+ if ( elem.ownerDocument.defaultView.opener ) {
6146
+ return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
6147
+ }
6148
+
6149
+ return window.getComputedStyle( elem, null );
6119
6150
  };
6120
6151
 
6121
6152
  curCSS = function( elem, name, computed ) {
@@ -6363,6 +6394,8 @@ function addGetHookIf( conditionFn, hookFn ) {
6363
6394
 
6364
6395
  reliableMarginRightVal =
6365
6396
  !parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );
6397
+
6398
+ div.removeChild( contents );
6366
6399
  }
6367
6400
 
6368
6401
  // Support: IE8
@@ -9070,7 +9103,8 @@ jQuery.extend({
9070
9103
  }
9071
9104
 
9072
9105
  // We can fire global events as of now if asked to
9073
- fireGlobals = s.global;
9106
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9107
+ fireGlobals = jQuery.event && s.global;
9074
9108
 
9075
9109
  // Watch for a new set of requests
9076
9110
  if ( fireGlobals && jQuery.active++ === 0 ) {
@@ -9329,13 +9363,6 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
9329
9363
  };
9330
9364
  });
9331
9365
 
9332
- // Attach a bunch of functions for handling common AJAX events
9333
- jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
9334
- jQuery.fn[ type ] = function( fn ) {
9335
- return this.on( type, fn );
9336
- };
9337
- });
9338
-
9339
9366
 
9340
9367
  jQuery._evalUrl = function( url ) {
9341
9368
  return jQuery.ajax({
@@ -9561,8 +9588,9 @@ var xhrId = 0,
9561
9588
 
9562
9589
  // Support: IE<10
9563
9590
  // Open requests must be manually aborted on unload (#5280)
9564
- if ( window.ActiveXObject ) {
9565
- jQuery( window ).on( "unload", function() {
9591
+ // See https://support.microsoft.com/kb/2856746 for more info
9592
+ if ( window.attachEvent ) {
9593
+ window.attachEvent( "onunload", function() {
9566
9594
  for ( var key in xhrCallbacks ) {
9567
9595
  xhrCallbacks[ key ]( undefined, true );
9568
9596
  }
@@ -9996,6 +10024,16 @@ jQuery.fn.load = function( url, params, callback ) {
9996
10024
 
9997
10025
 
9998
10026
 
10027
+ // Attach a bunch of functions for handling common AJAX events
10028
+ jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
10029
+ jQuery.fn[ type ] = function( fn ) {
10030
+ return this.on( type, fn );
10031
+ };
10032
+ });
10033
+
10034
+
10035
+
10036
+
9999
10037
  jQuery.expr.filters.animated = function( elem ) {
10000
10038
  return jQuery.grep(jQuery.timers, function( fn ) {
10001
10039
  return elem === fn.elem;