Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Landing pull request 331. Add support for registering jQuery as an AM…

…D module. Fixes #7102.

More Details:
 - #331
 - http://bugs.jquery.com/ticket/7102
  • Loading branch information...
commit bba3d610c7e3b611fe1eb89178c91106a156a5dc 2 parents 2831cfd + 0b1c2e6
@jrburke jrburke authored timmywil committed
Showing with 33 additions and 1 deletion.
  1. +14 −0 src/core.js
  2. +13 −1 test/data/testinit.js
  3. +6 −0 test/unit/core.js
View
14 src/core.js
@@ -935,6 +935,20 @@ function doScrollCheck() {
jQuery.ready();
}
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+ define( "jquery", [], function () { return jQuery; } );
+}
+
return jQuery;
})();
View
14 test/data/testinit.js
@@ -1,7 +1,19 @@
var jQuery = this.jQuery || "jQuery", // For testing .noConflict()
$ = this.$ || "$",
originaljQuery = jQuery,
- original$ = $;
+ original$ = $,
+ amdDefined;
+
+/**
+ * Set up a mock AMD define function for testing AMD registration.
+ */
+function define(name, dependencies, callback) {
+ amdDefined = callback();
+}
+
+define.amd = {
+ jQuery: true
+};
/**
* Returns an array of elements with the given IDs, eg.
View
6 test/unit/core.js
@@ -225,6 +225,12 @@ test("browser", function() {
});
}
+test("amdModule", function() {
+ expect(1);
+
+ equals( jQuery, amdDefined, "Make sure defined module matches jQuery" );
+});
+
test("noConflict", function() {
expect(7);
Please sign in to comment.
Something went wrong with that request. Please try again.