Skip to content
Permalink
Browse files

Add support for registering jQuery as an AMD module. Only does so if …

…the AMD loader indicates it has special allowances for multiple versions of jQuery being loaded in a page.
  • Loading branch information...
jrburke committed Apr 17, 2011
1 parent 5d70c6d commit 0b1c2e642ac0267b95759b2a7593a7d19aa43c9c
Showing with 34 additions and 2 deletions.
  1. +14 −0 src/core.js
  2. +13 −1 test/data/testinit.js
  3. +7 −1 test/unit/core.js
@@ -930,6 +930,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; } );
}

// Expose jQuery to the global object
return jQuery;

@@ -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.
@@ -214,6 +214,12 @@ test("browser", function() {
});
}

test("amdModule", function() {
expect(1);

equals( jQuery, amdDefined, "Make sure defined module matches jQuery" );
});

test("noConflict", function() {
expect(7);

@@ -850,7 +856,7 @@ test("jQuery.each(Object,Function)", function() {
f[i] = "baz";
});
equals( "baz", f.foo, "Loop over a function" );

var stylesheet_count = 0;
jQuery.each(document.styleSheets, function(i){
stylesheet_count++;

0 comments on commit 0b1c2e6

Please sign in to comment.
You can’t perform that action at this time.