Made 'jQuery' unrollable via .noConflict(true) and instances of new Function() have been converted to eval(function(){}) in order to handle jQuery name changes. (Bug #1393)

This commit is contained in:
John Resig 2007-08-22 05:44:47 +00:00
parent e06b7447c2
commit fc3e180465

18
src/jquery/jquery.js vendored
View file

@ -19,6 +19,11 @@
* @param jQuery|Element|Array<Element> c context * @param jQuery|Element|Array<Element> c context
* @cat Core * @cat Core
*/ */
// Map over jQuery in case of overwrite
if ( typeof jQuery != "undefined" )
var _jQuery = jQuery;
var jQuery = window.jQuery = function(a,c) { var jQuery = window.jQuery = function(a,c) {
// If the context is global, return a new object // If the context is global, return a new object
if ( window == this || !this.init ) if ( window == this || !this.init )
@ -29,7 +34,7 @@ var jQuery = window.jQuery = function(a,c) {
// Map over the $ in case of overwrite // Map over the $ in case of overwrite
if ( typeof $ != "undefined" ) if ( typeof $ != "undefined" )
jQuery._$ = $; var _$ = $;
// Map the jQuery namespace to the '$' one // Map the jQuery namespace to the '$' one
window.$ = jQuery; window.$ = jQuery;
@ -1345,9 +1350,10 @@ jQuery.extend({
* @type undefined * @type undefined
* @cat Core * @cat Core
*/ */
noConflict: function() { noConflict: function(deep) {
if ( jQuery._$ ) window.$ = _$;
$ = jQuery._$; if ( deep )
window.jQuery = _jQuery;
return jQuery; return jQuery;
}, },
@ -1851,7 +1857,7 @@ jQuery.extend({
// If a string is passed in for the function, make a function // If a string is passed in for the function, make a function
// for it (a handy shortcut) // for it (a handy shortcut)
if ( typeof fn == "string" ) if ( typeof fn == "string" )
fn = new Function("a","i","return " + fn); fn = eval("function(a,i){return " + fn + "}");
var result = []; var result = [];
@ -1905,7 +1911,7 @@ jQuery.extend({
// If a string is passed in for the function, make a function // If a string is passed in for the function, make a function
// for it (a handy shortcut) // for it (a handy shortcut)
if ( typeof fn == "string" ) if ( typeof fn == "string" )
fn = new Function("a","return " + fn); fn = eval("function(a){return " + fn + "}");
var result = []; var result = [];