diff options
author | jeresig <jeresig@gmail.com> | 2010-03-23 12:12:16 -0400 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-03-23 12:12:16 -0400 |
commit | 8effe3a7dee91c833cc1774646da9d743600c64c (patch) | |
tree | 1d8c9b10b5a7431ffb9c5c70cf4654e7c98d9438 /src | |
parent | ba8938d444b9a49bdfb27213826ba108145c2e50 (diff) | |
download | jquery-8effe3a7dee91c833cc1774646da9d743600c64c.tar.gz jquery-8effe3a7dee91c833cc1774646da9d743600c64c.zip |
Made it so that you no longer need to build jQuery in order to run the test suite (but you'll still need a checkout of QUnit and Sizzle, at least).
Diffstat (limited to 'src')
-rw-r--r-- | src/ajax.js | 4 | ||||
-rw-r--r-- | src/attributes.js | 2 | ||||
-rw-r--r-- | src/core.js | 87 | ||||
-rw-r--r-- | src/css.js | 2 | ||||
-rw-r--r-- | src/data.js | 2 | ||||
-rw-r--r-- | src/effects.js | 4 | ||||
-rw-r--r-- | src/event.js | 2 | ||||
-rw-r--r-- | src/manipulation.js | 16 | ||||
-rw-r--r-- | src/outro.js | 3 | ||||
-rw-r--r-- | src/sizzle-jquery.js | 6 | ||||
-rw-r--r-- | src/support.js | 2 | ||||
-rw-r--r-- | src/traversing.js | 64 |
12 files changed, 100 insertions, 94 deletions
diff --git a/src/ajax.js b/src/ajax.js index f797e1a78..7cf280ab3 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -1,4 +1,4 @@ -var jsc = now(), +var jsc = jQuery.now(), rscript = /<script(.|\s)*?\/script>/gi, rselectTextarea = /select|textarea/i, rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i, @@ -259,7 +259,7 @@ jQuery.extend({ } if ( s.cache === false && type === "GET" ) { - var ts = now(); + var ts = jQuery.now(); // try replacing _= if it is there var ret = s.url.replace(rts, "$1_=" + ts + "$2"); diff --git a/src/attributes.js b/src/attributes.js index 4f7055a6e..aca9e055d 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -9,7 +9,7 @@ var rclass = /[\n\t]/g, jQuery.fn.extend({ attr: function( name, value ) { - return access( this, name, value, true, jQuery.attr ); + return jQuery.access( this, name, value, true, jQuery.attr ); }, removeAttr: function( name, fn ) { diff --git a/src/core.js b/src/core.js index 699b87ac9..e1a3a6df2 100644 --- a/src/core.js +++ b/src/core.js @@ -1,3 +1,5 @@ +(function() { + // Define a local copy of jQuery var jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' @@ -11,7 +13,7 @@ var jQuery = function( selector, context ) { _$ = window.$, // Use the correct document accordingly with window argument (sandbox) - document = window.document, + //document = window.document, // A central reference to the root jQuery(document) rootjQuery, @@ -699,6 +701,39 @@ jQuery.extend({ return proxy; }, + // Mutifunctional method to get and set values to a collection + // The value/s can be optionally by executed if its a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return (new Date()).getTime(); + }, + // Use of jQuery.browser is frowned upon. // More details: http://docs.jquery.com/Utilities/jQuery.browser uaMatch: function( ua ) { @@ -779,51 +814,7 @@ function doScrollCheck() { jQuery.ready(); } -function evalScript( i, elem ) { - if ( elem.src ) { - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - } - - if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); - } -} - -// Mutifunctional method to get and set values to a collection -// The value/s can be optionally by executed if its a function -function access( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; -} +// Expose jQuery to the global object +window.jQuery = window.$ = jQuery; -function now() { - return (new Date()).getTime(); -} +})(); diff --git a/src/css.js b/src/css.js index f675e13fc..ad0da6469 100644 --- a/src/css.js +++ b/src/css.js @@ -21,7 +21,7 @@ var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, }; jQuery.fn.css = function( name, value ) { - return access( this, name, value, true, function( elem, name, value ) { + return jQuery.access( this, name, value, true, function( elem, name, value ) { if ( value === undefined ) { return jQuery.curCSS( elem, name ); } diff --git a/src/data.js b/src/data.js index 109d55686..cddd8bdea 100644 --- a/src/data.js +++ b/src/data.js @@ -1,4 +1,4 @@ -var expando = "jQuery" + now(), uuid = 0, windowData = {}; +var expando = "jQuery" + jQuery.now(), uuid = 0, windowData = {}; jQuery.extend({ cache: {}, diff --git a/src/effects.js b/src/effects.js index 97456ccc4..40326e23d 100644 --- a/src/effects.js +++ b/src/effects.js @@ -320,7 +320,7 @@ jQuery.fx.prototype = { // Start an animation from one number to another custom: function( from, to, unit ) { - this.startTime = now(); + this.startTime = jQuery.now(); this.start = from; this.end = to; this.unit = unit || this.unit || "px"; @@ -366,7 +366,7 @@ jQuery.fx.prototype = { // Each step of an animation step: function( gotoEnd ) { - var t = now(), done = true; + var t = jQuery.now(), done = true; if ( gotoEnd || t >= this.options.duration + this.startTime ) { this.now = this.end; diff --git a/src/event.js b/src/event.js index 173bab10e..588a7979a 100644 --- a/src/event.js +++ b/src/event.js @@ -554,7 +554,7 @@ jQuery.Event = function( src ) { // timeStamp is buggy for some events on Firefox(#3843) // So we won't rely on the native value - this.timeStamp = now(); + this.timeStamp = jQuery.now(); // Mark it as fixed this[ expando ] = true; diff --git a/src/manipulation.js b/src/manipulation.js index be12aa12b..cb898cc3c 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -584,3 +584,19 @@ jQuery.extend({ } } }); + +function evalScript( i, elem ) { + if ( elem.src ) { + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + } else { + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } +}
\ No newline at end of file diff --git a/src/outro.js b/src/outro.js index 5d87b7e7b..7773a74fd 100644 --- a/src/outro.js +++ b/src/outro.js @@ -1,4 +1 @@ -// Expose jQuery to the global object -window.jQuery = window.$ = jQuery; - })(window); diff --git a/src/sizzle-jquery.js b/src/sizzle-jquery.js index 99f4d291b..f15b08252 100644 --- a/src/sizzle-jquery.js +++ b/src/sizzle-jquery.js @@ -2,6 +2,6 @@ jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.filters; jQuery.unique = Sizzle.uniqueSort; -jQuery.text = getText; -jQuery.isXMLDoc = isXML; -jQuery.contains = contains; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; diff --git a/src/support.js b/src/support.js index befc53272..cddd3dc3b 100644 --- a/src/support.js +++ b/src/support.js @@ -5,7 +5,7 @@ var root = document.documentElement, script = document.createElement("script"), div = document.createElement("div"), - id = "script" + now(); + id = "script" + jQuery.now(); div.style.display = "none"; div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; diff --git a/src/traversing.js b/src/traversing.js index 67760450f..d485d691a 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -1,37 +1,9 @@ var runtil = /Until$/, rparentsprev = /^(?:parents|prevUntil|prevAll)/, // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/; - -// Implement the identical functionality for filter and not -var winnow = function( elements, qualifier, keep ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -}; + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice; jQuery.fn.extend({ find: function( selector ) { @@ -269,3 +241,33 @@ jQuery.extend({ return r; } }); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +};
\ No newline at end of file |