Build: Update jscs and lint files

Ref 10fdad742a
Fixes gh-2056
This commit is contained in:
Oleg Gaidarenko 2015-09-03 02:52:01 +03:00
parent fa8a5a90e1
commit 20ddbe4f59
135 changed files with 8800 additions and 8027 deletions

11
.jscsrc
View File

@ -1,6 +1,13 @@
{ {
"preset": "jquery", "preset": "jquery",
"excludeFiles": [ "external", "src/intro.js", "src/outro.js", // remove after https://github.com/jscs-dev/node-jscs/issues/1685
"test/node_smoke_tests/lib/ensure_iterability.js" ] // and https://github.com/jscs-dev/node-jscs/issues/1686
"requireCapitalizedComments": null,
"excludeFiles": [
"external", "src/intro.js", "src/outro.js",
"node_modules",
"test/node_smoke_tests/lib/ensure_iterability.js"
]
} }

View File

@ -20,7 +20,7 @@ module.exports = function( grunt ) {
// But our modules can // But our modules can
delete srcHintOptions.onevar; delete srcHintOptions.onevar;
grunt.initConfig({ grunt.initConfig( {
pkg: grunt.file.readJSON( "package.json" ), pkg: grunt.file.readJSON( "package.json" ),
dst: readOptionalJSON( "dist/.destination.json" ), dst: readOptionalJSON( "dist/.destination.json" ),
"compare_size": { "compare_size": {
@ -107,7 +107,12 @@ module.exports = function( grunt ) {
gruntfile: "Gruntfile.js", gruntfile: "Gruntfile.js",
// Check parts of tests that pass // Check parts of tests that pass
test: [ "test/data/testrunner.js", "test/unit/animation.js", "test/unit/tween.js" ], test: [
"test/data/testrunner.js",
"test/unit/animation.js",
"test/unit/tween.js",
"test/unit/wrap.js"
],
build: "build" build: "build"
}, },
testswarm: { testswarm: {
@ -160,7 +165,7 @@ module.exports = function( grunt ) {
} }
} }
} }
}); } );
// Load grunt tasks from NPM packages // Load grunt tasks from NPM packages
require( "load-grunt-tasks" )( grunt ); require( "load-grunt-tasks" )( grunt );

View File

@ -10,7 +10,7 @@ module.exports = function( Release ) {
npmTags = Release.npmTags, npmTags = Release.npmTags,
createTag = Release._createTag; createTag = Release._createTag;
Release.define({ Release.define( {
npmPublish: true, npmPublish: true,
issueTracker: "github", issueTracker: "github",
/** /**
@ -48,6 +48,7 @@ module.exports = function( Release ) {
* for publishing the distribution repo instead * for publishing the distribution repo instead
*/ */
npmTags: function() { npmTags: function() {
// origRepo is not defined if dist was skipped // origRepo is not defined if dist was skipped
Release.dir.repo = Release.dir.origRepo || Release.dir.repo; Release.dir.repo = Release.dir.origRepo || Release.dir.repo;
return npmTags(); return npmTags();
@ -59,9 +60,9 @@ module.exports = function( Release ) {
dist: function( callback ) { dist: function( callback ) {
cdn.makeArchives( Release, function() { cdn.makeArchives( Release, function() {
dist( Release, callback ); dist( Release, callback );
}); } );
} }
}); } );
}; };
module.exports.dependencies = [ module.exports.dependencies = [

View File

@ -33,13 +33,14 @@ function makeReleaseCopies( Release ) {
var version = Release.newVersion.replace( "-compat", "" ); var version = Release.newVersion.replace( "-compat", "" );
shell.mkdir( "-p", cdnFolder ); shell.mkdir( "-p", cdnFolder );
Object.keys( releaseFiles ).forEach(function( key ) { Object.keys( releaseFiles ).forEach( function( key ) {
var text, var text,
builtFile = releaseFiles[ key ], builtFile = releaseFiles[ key ],
unpathedFile = key.replace( /VER/g, version ), unpathedFile = key.replace( /VER/g, version ),
releaseFile = cdnFolder + "/" + unpathedFile; releaseFile = cdnFolder + "/" + unpathedFile;
if ( /\.map$/.test( releaseFile ) ) { if ( /\.map$/.test( releaseFile ) ) {
// Map files need to reference the new uncompressed name; // Map files need to reference the new uncompressed name;
// assume that all files reside in the same directory. // assume that all files reside in the same directory.
// "file":"jquery.min.js","sources":["jquery.js"] // "file":"jquery.min.js","sources":["jquery.js"]
@ -51,7 +52,7 @@ function makeReleaseCopies( Release ) {
} else if ( builtFile !== releaseFile ) { } else if ( builtFile !== releaseFile ) {
shell.cp( "-f", builtFile, releaseFile ); shell.cp( "-f", builtFile, releaseFile );
} }
}); } );
} }
function makeArchives( Release, callback ) { function makeArchives( Release, callback ) {
@ -80,16 +81,17 @@ function makeArchives( Release, callback ) {
output.on( "error", function( err ) { output.on( "error", function( err ) {
throw err; throw err;
}); } );
archiver.pipe( output ); archiver.pipe( output );
files = files.map(function( item ) { files = files.map( function( item ) {
return "dist" + ( rver.test( item ) ? "/cdn" : "" ) + "/" + return "dist" + ( rver.test( item ) ? "/cdn" : "" ) + "/" +
item.replace( rver, version ); item.replace( rver, version );
}); } );
sum = Release.exec( sum = Release.exec(
// Read jQuery files // Read jQuery files
"md5sum " + files.join( " " ).replace( rcompat, "." ), "md5sum " + files.join( " " ).replace( rcompat, "." ),
"Error retrieving md5sum" "Error retrieving md5sum"
@ -97,11 +99,12 @@ function makeArchives( Release, callback ) {
fs.writeFileSync( "./" + md5file, sum ); fs.writeFileSync( "./" + md5file, sum );
files.push( md5file ); files.push( md5file );
files.forEach(function( file ) { files.forEach( function( file ) {
// For Google, read jquery.js, write jquery-compat.js // For Google, read jquery.js, write jquery-compat.js
archiver.append( fs.createReadStream( file.replace( rcompat, "." ) ), archiver.append( fs.createReadStream( file.replace( rcompat, "." ) ),
{ name: path.basename( file ) } ); { name: path.basename( file ) } );
}); } );
archiver.finalize(); archiver.finalize();
} }
@ -114,9 +117,9 @@ function makeArchives( Release, callback ) {
makeArchive( "mscdn", msFilesCDN, callback ); makeArchive( "mscdn", msFilesCDN, callback );
} }
buildGoogleCDN(function() { buildGoogleCDN( function() {
buildMicrosoftCDN( callback ); buildMicrosoftCDN( callback );
}); } );
} }
module.exports = { module.exports = {

View File

@ -5,6 +5,7 @@ module.exports = function( Release, complete ) {
shell = require( "shelljs" ), shell = require( "shelljs" ),
pkg = require( Release.dir.repo + "/package.json" ), pkg = require( Release.dir.repo + "/package.json" ),
distRemote = Release.remote.replace( "jquery.git", "jquery-compat-dist.git" ), distRemote = Release.remote.replace( "jquery.git", "jquery-compat-dist.git" ),
// These files are included with the distribution // These files are included with the distribution
files = [ files = [
"src", "src",
@ -34,7 +35,7 @@ module.exports = function( Release, complete ) {
* Generate bower file for jquery-compat-dist * Generate bower file for jquery-compat-dist
*/ */
function generateBower() { function generateBower() {
return JSON.stringify({ return JSON.stringify( {
name: pkg.name, name: pkg.name,
main: pkg.main, main: pkg.main,
license: "MIT", license: "MIT",
@ -42,7 +43,7 @@ module.exports = function( Release, complete ) {
"package.json" "package.json"
], ],
keywords: pkg.keywords keywords: pkg.keywords
}, null, 2); }, null, 2 );
} }
/** /**
@ -57,14 +58,14 @@ module.exports = function( Release, complete ) {
"dist/jquery.js", "dist/jquery.js",
"dist/jquery.min.js", "dist/jquery.min.js",
"dist/jquery.min.map" "dist/jquery.min.map"
].forEach(function( file ) { ].forEach( function( file ) {
shell.cp( Release.dir.repo + "/" + file, distFolder ); shell.cp( Release.dir.repo + "/" + file, distFolder );
}); } );
// Copy other files // Copy other files
files.forEach(function( file ) { files.forEach( function( file ) {
shell.cp( "-r", Release.dir.repo + "/" + file, Release.dir.dist ); shell.cp( "-r", Release.dir.repo + "/" + file, Release.dir.dist );
}); } );
// Write generated bower file // Write generated bower file
fs.writeFileSync( Release.dir.dist + "/bower.json", generateBower() ); fs.writeFileSync( Release.dir.dist + "/bower.json", generateBower() );

View File

@ -8,7 +8,7 @@ var fs = require( "fs" ),
* @param {Function(string)} callback * @param {Function(string)} callback
*/ */
function getLatestSizzle( callback ) { function getLatestSizzle( callback ) {
npm.load(function( err, npm ) { npm.load( function( err, npm ) {
if ( err ) { if ( err ) {
throw err; throw err;
} }
@ -17,8 +17,8 @@ function getLatestSizzle( callback ) {
throw err; throw err;
} }
callback( Object.keys( info )[ 0 ] ); callback( Object.keys( info )[ 0 ] );
}); } );
}); } );
} }
/** /**
@ -29,11 +29,12 @@ function getLatestSizzle( callback ) {
function ensureSizzle( Release, callback ) { function ensureSizzle( Release, callback ) {
console.log(); console.log();
console.log( "Checking Sizzle version..." ); console.log( "Checking Sizzle version..." );
getLatestSizzle(function( latest ) { getLatestSizzle( function( latest ) {
var match = rversion.exec( fs.readFileSync( sizzleLoc, "utf8" ) ), var match = rversion.exec( fs.readFileSync( sizzleLoc, "utf8" ) ),
version = match ? match[ 1 ] : "Not Found"; version = match ? match[ 1 ] : "Not Found";
if ( version !== latest ) { if ( version !== latest ) {
// colors is inherited from jquery-release // colors is inherited from jquery-release
console.log( console.log(
"The Sizzle version in the src folder (" + version.red + "The Sizzle version in the src folder (" + version.red +
@ -44,7 +45,7 @@ function ensureSizzle( Release, callback ) {
console.log( "Sizzle is latest (" + latest.green + ")" ); console.log( "Sizzle is latest (" + latest.green + ")" );
callback(); callback();
} }
}); } );
} }
module.exports = ensureSizzle; module.exports = ensureSizzle;

View File

@ -3,16 +3,16 @@
* jQuery Release Note Generator * jQuery Release Note Generator
*/ */
var http = require("http"), var http = require( "http" ),
extract = /<a href="\/ticket\/(\d+)" title="View ticket">(.*?)<[^"]+"component">\s*(\S+)/g, extract = /<a href="\/ticket\/(\d+)" title="View ticket">(.*?)<[^"]+"component">\s*(\S+)/g,
version = process.argv[2]; version = process.argv[ 2 ];
if ( !/^\d+\.\d+/.test( version ) ) { if ( !/^\d+\.\d+/.test( version ) ) {
console.error( "Invalid version number: " + version ); console.error( "Invalid version number: " + version );
process.exit( 1 ); process.exit( 1 );
} }
http.request({ http.request( {
host: "bugs.jquery.com", host: "bugs.jquery.com",
port: 80, port: 80,
method: "GET", method: "GET",
@ -23,34 +23,36 @@ http.request({
res.on( "data", function( chunk ) { res.on( "data", function( chunk ) {
data.push( chunk ); data.push( chunk );
}); } );
res.on( "end", function() { res.on( "end", function() {
var match, cur, cat, var match, cur, cat,
file = data.join(""); file = data.join( "" );
while ( (match = extract.exec( file )) ) { while ( ( match = extract.exec( file ) ) ) {
if ( "#" + match[1] !== match[2] ) { if ( "#" + match[ 1 ] !== match[ 2 ] ) {
cat = match[3]; cat = match[ 3 ];
if ( !cur || cur !== cat ) { if ( !cur || cur !== cat ) {
if ( cur ) { if ( cur ) {
console.log("</ul>"); console.log( "</ul>" );
} }
cur = cat; cur = cat;
console.log( "<h3>" + cat.charAt(0).toUpperCase() + cat.slice(1) + "</h3>" ); console.log(
console.log("<ul>"); "<h3>" + cat.charAt( 0 ).toUpperCase() + cat.slice( 1 ) + "</h3>"
);
console.log( "<ul>" );
} }
console.log( console.log(
" <li><a href=\"http://bugs.jquery.com/ticket/" + match[1] + "\">#" + " <li><a href=\"http://bugs.jquery.com/ticket/" + match[ 1 ] + "\">#" +
match[1] + ": " + match[2] + "</a></li>" match[ 1 ] + ": " + match[ 2 ] + "</a></li>"
); );
} }
} }
if ( cur ) { if ( cur ) {
console.log("</ul>"); console.log( "</ul>" );
} }
}); } );
}).end(); } ).end();

View File

@ -16,12 +16,16 @@ module.exports = function( grunt ) {
baseUrl: "src", baseUrl: "src",
name: "jquery", name: "jquery",
out: "dist/jquery.js", out: "dist/jquery.js",
// We have multiple minify steps // We have multiple minify steps
optimize: "none", optimize: "none",
// Include dependencies loaded with require // Include dependencies loaded with require
findNestedDependencies: true, findNestedDependencies: true,
// Avoid inserting define() placeholder // Avoid inserting define() placeholder
skipModuleInsertion: true, skipModuleInsertion: true,
// Avoid breaking semicolons inserted by r.js // Avoid breaking semicolons inserted by r.js
skipSemiColonInsertion: true, skipSemiColonInsertion: true,
wrap: { wrap: {
@ -47,15 +51,17 @@ module.exports = function( grunt ) {
*/ */
function convert( name, path, contents ) { function convert( name, path, contents ) {
var amdName; var amdName;
// Convert var modules // Convert var modules
if ( /.\/var\//.test( path ) ) { if ( /.\/var\//.test( path ) ) {
contents = contents contents = contents
.replace( /define\([\w\W]*?return/, "var " + (/var\/([\w-]+)/.exec(name)[1]) + " =" ) .replace( /define\([\w\W]*?return/, "var " + ( /var\/([\w-]+)/.exec( name )[ 1 ] ) + " =" )
.replace( rdefineEnd, "" ); .replace( rdefineEnd, "" );
// Sizzle treatment // Sizzle treatment
} else if ( /^sizzle$/.test( name ) ) { } else if ( /^sizzle$/.test( name ) ) {
contents = "var Sizzle =\n" + contents contents = "var Sizzle =\n" + contents
// Remove EXPOSE lines from Sizzle // Remove EXPOSE lines from Sizzle
.replace( /\/\/\s*EXPOSE[\w\W]*\/\/\s*EXPOSE/, "return Sizzle;" ); .replace( /\/\/\s*EXPOSE[\w\W]*\/\/\s*EXPOSE/, "return Sizzle;" );
@ -63,6 +69,7 @@ module.exports = function( grunt ) {
contents = contents contents = contents
.replace( /\s*return\s+[^\}]+(\}\);[^\w\}]*)$/, "$1" ) .replace( /\s*return\s+[^\}]+(\}\);[^\w\}]*)$/, "$1" )
// Multiple exports // Multiple exports
.replace( /\s*exports\.\w+\s*=\s*\w+;/g, "" ); .replace( /\s*exports\.\w+\s*=\s*\w+;/g, "" );
@ -82,13 +89,15 @@ module.exports = function( grunt ) {
contents = contents contents = contents
.replace( /define\(\[[^\]]*\]\)[\W\n]+$/, "" ); .replace( /define\(\[[^\]]*\]\)[\W\n]+$/, "" );
} }
// AMD Name // AMD Name
if ( (amdName = grunt.option( "amd" )) != null && /^exports\/amd$/.test( name ) ) { if ( ( amdName = grunt.option( "amd" ) ) != null && /^exports\/amd$/.test( name ) ) {
if (amdName) { if ( amdName ) {
grunt.log.writeln( "Naming jQuery with AMD name: " + amdName ); grunt.log.writeln( "Naming jQuery with AMD name: " + amdName );
} else { } else {
grunt.log.writeln( "AMD name now anonymous" ); grunt.log.writeln( "AMD name now anonymous" );
} }
// Remove the comma for anonymous defines // Remove the comma for anonymous defines
contents = contents contents = contents
.replace( /(\s*)"jquery"(\,\s*)/, amdName ? "$1\"" + amdName + "\"$2" : "" ); .replace( /(\s*)"jquery"(\,\s*)/, amdName ? "$1\"" + amdName + "\"$2" : "" );
@ -121,7 +130,8 @@ module.exports = function( grunt ) {
excludeList = function( list, prepend ) { excludeList = function( list, prepend ) {
if ( list ) { if ( list ) {
prepend = prepend ? prepend + "/" : ""; prepend = prepend ? prepend + "/" : "";
list.forEach(function( module ) { list.forEach( function( module ) {
// Exclude var modules as well // Exclude var modules as well
if ( module === "var" ) { if ( module === "var" ) {
excludeList( excludeList(
@ -130,20 +140,22 @@ module.exports = function( grunt ) {
return; return;
} }
if ( prepend ) { if ( prepend ) {
// Skip if this is not a js file and we're walking files in a dir // Skip if this is not a js file and we're walking files in a dir
if ( !(module = /([\w-\/]+)\.js$/.exec( module )) ) { if ( !( module = /([\w-\/]+)\.js$/.exec( module ) ) ) {
return; return;
} }
// Prepend folder name if passed // Prepend folder name if passed
// Remove .js extension // Remove .js extension
module = prepend + module[1]; module = prepend + module[ 1 ];
} }
// Avoid infinite recursion // Avoid infinite recursion
if ( excluded.indexOf( module ) === -1 ) { if ( excluded.indexOf( module ) === -1 ) {
excluder( "-" + module ); excluder( "-" + module );
} }
}); } );
} }
}, },
/** /**
@ -158,16 +170,19 @@ module.exports = function( grunt ) {
module = m[ 2 ]; module = m[ 2 ];
if ( exclude ) { if ( exclude ) {
// Can't exclude sizzle on this branch // Can't exclude sizzle on this branch
if ( module === "sizzle" ) { if ( module === "sizzle" ) {
grunt.log.error( "Sizzle cannot be excluded on the compat branch." ); grunt.log.error( "Sizzle cannot be excluded on the compat branch." );
// Can't exclude certain modules // Can't exclude certain modules
} else if ( minimum.indexOf( module ) === -1 ) { } else if ( minimum.indexOf( module ) === -1 ) {
// Add to excluded // Add to excluded
if ( excluded.indexOf( module ) === -1 ) { if ( excluded.indexOf( module ) === -1 ) {
grunt.log.writeln( flag ); grunt.log.writeln( flag );
excluded.push( module ); excluded.push( module );
// Exclude all files in the folder of the same name // Exclude all files in the folder of the same name
// These are the removable dependencies // These are the removable dependencies
// It's fine if the directory is not there // It's fine if the directory is not there
@ -177,10 +192,11 @@ module.exports = function( grunt ) {
grunt.verbose.writeln( e ); grunt.verbose.writeln( e );
} }
} }
// Check removeWith list // Check removeWith list
excludeList( removeWith[ module ] ); excludeList( removeWith[ module ] );
} else { } else {
grunt.log.error( "Module \"" + module + "\" is a minimum requirement."); grunt.log.error( "Module \"" + module + "\" is a minimum requirement." );
} }
} else { } else {
grunt.log.writeln( flag ); grunt.log.writeln( flag );
@ -213,7 +229,7 @@ module.exports = function( grunt ) {
} }
// Replace exports/global with a noop noConflict // Replace exports/global with a noop noConflict
if ( (index = excluded.indexOf( "exports/global" )) > -1 ) { if ( ( index = excluded.indexOf( "exports/global" ) ) > -1 ) {
config.rawText[ "exports/global" ] = "define(['../core']," + config.rawText[ "exports/global" ] = "define(['../core']," +
"function( jQuery ) {\njQuery.noConflict = function() {};\n});"; "function( jQuery ) {\njQuery.noConflict = function() {};\n});";
excluded.splice( index, 1 ); excluded.splice( index, 1 );
@ -225,9 +241,11 @@ module.exports = function( grunt ) {
// append excluded modules to version // append excluded modules to version
if ( excluded.length ) { if ( excluded.length ) {
version += " -" + excluded.join( ",-" ); version += " -" + excluded.join( ",-" );
// set pkg.version to version with excludes, so minified file picks it up // set pkg.version to version with excludes, so minified file picks it up
grunt.config.set( "pkg.version", version ); grunt.config.set( "pkg.version", version );
grunt.verbose.writeln( "Version changed to " + version ); grunt.verbose.writeln( "Version changed to " + version );
// Have to use shallow or core will get excluded since it is a dependency // Have to use shallow or core will get excluded since it is a dependency
config.excludeShallow = excluded; config.excludeShallow = excluded;
} }
@ -239,8 +257,10 @@ module.exports = function( grunt ) {
*/ */
config.out = function( compiled ) { config.out = function( compiled ) {
compiled = compiled compiled = compiled
// Embed Version // Embed Version
.replace( /@VERSION/g, version ) .replace( /@VERSION/g, version )
// Embed Date // Embed Date
// yyyy-mm-ddThh:mmZ // yyyy-mm-ddThh:mmZ
.replace( /@DATE/g, ( new Date() ).toISOString().replace( /:\d+\.\d+Z$/, "Z" ) ); .replace( /@DATE/g, ( new Date() ).toISOString().replace( /:\d+\.\d+Z$/, "Z" ) );
@ -251,9 +271,10 @@ module.exports = function( grunt ) {
// Turn off opt-in if necessary // Turn off opt-in if necessary
if ( !optIn ) { if ( !optIn ) {
// Overwrite the default inclusions with the explicit ones provided // Overwrite the default inclusions with the explicit ones provided
config.rawText.jquery = "define([" + config.rawText.jquery = "define([" +
(included.length ? included.join(",") : "") + ( included.length ? included.join( "," ) : "" ) +
"]);"; "]);";
} }
@ -264,8 +285,8 @@ module.exports = function( grunt ) {
done(); done();
}, function( err ) { }, function( err ) {
done( err ); done( err );
}); } );
}); } );
// Special "alias" task to make custom build creation less grawlix-y // Special "alias" task to make custom build creation less grawlix-y
// Translation example // Translation example
@ -281,6 +302,6 @@ module.exports = function( grunt ) {
grunt.log.writeln( "Creating custom build...\n" ); grunt.log.writeln( "Creating custom build...\n" );
grunt.task.run([ "build:*:*" + (modules ? ":" + modules : ""), "uglify", "dist" ]); grunt.task.run( [ "build:*:*" + ( modules ? ":" + modules : "" ), "uglify", "dist" ] );
}); } );
}; };

View File

@ -21,14 +21,14 @@ module.exports = function( grunt ) {
flags = Object.keys( this.flags ); flags = Object.keys( this.flags );
// Combine all output target paths // Combine all output target paths
paths = [].concat( stored, flags ).filter(function( path ) { paths = [].concat( stored, flags ).filter( function( path ) {
return path !== "*"; return path !== "*";
}); } );
// Ensure the dist files are pure ASCII // Ensure the dist files are pure ASCII
nonascii = false; nonascii = false;
distpaths.forEach(function( filename ) { distpaths.forEach( function( filename ) {
var i, c, var i, c,
text = fs.readFileSync( filename, "utf8" ); text = fs.readFileSync( filename, "utf8" );
@ -53,7 +53,7 @@ module.exports = function( grunt ) {
} }
// Optionally copy dist files to other locations // Optionally copy dist files to other locations
paths.forEach(function( path ) { paths.forEach( function( path ) {
var created; var created;
if ( !/\/$/.test( path ) ) { if ( !/\/$/.test( path ) ) {
@ -63,9 +63,9 @@ module.exports = function( grunt ) {
created = path + filename.replace( "dist/", "" ); created = path + filename.replace( "dist/", "" );
grunt.file.write( created, text ); grunt.file.write( created, text );
grunt.log.writeln( "File '" + created + "' created." ); grunt.log.writeln( "File '" + created + "' created." );
}); } );
}); } );
return !nonascii; return !nonascii;
}); } );
}; };

View File

@ -23,5 +23,5 @@ module.exports = function( grunt ) {
args: [ "install", "jsdom@" + version ], args: [ "install", "jsdom@" + version ],
opts: { stdio: "inherit" } opts: { stdio: "inherit" }
}, this.async() ); }, this.async() );
}); } );
}; };

View File

@ -15,6 +15,6 @@ module.exports = function( grunt ) {
{ stdio: "inherit" } { stdio: "inherit" }
).on( "close", function( code ) { ).on( "close", function( code ) {
done( code === 0 ); done( code === 0 );
}); } );
}); } );
}; };

View File

@ -3,11 +3,12 @@ var fs = require( "fs" );
module.exports = function( grunt ) { module.exports = function( grunt ) {
var minLoc = Object.keys( grunt.config( "uglify.all.files" ) )[ 0 ]; var minLoc = Object.keys( grunt.config( "uglify.all.files" ) )[ 0 ];
grunt.registerTask( "remove_map_comment", function() { grunt.registerTask( "remove_map_comment", function() {
// Remove the source map comment; it causes way too many problems. // Remove the source map comment; it causes way too many problems.
// The map file is still generated for manual associations // The map file is still generated for manual associations
// https://github.com/jquery/jquery/issues/1707 // https://github.com/jquery/jquery/issues/1707
var text = fs.readFileSync( minLoc, "utf8" ) var text = fs.readFileSync( minLoc, "utf8" )
.replace( /\/\/# sourceMappingURL=\S+/, "" ); .replace( /\/\/# sourceMappingURL=\S+/, "" );
fs.writeFileSync( minLoc, text ); fs.writeFileSync( minLoc, text );
}); } );
}; };

View File

@ -14,11 +14,12 @@ module.exports = function( grunt ) {
config = grunt.file.readJSON( configFile )[ projectName ]; config = grunt.file.readJSON( configFile )[ projectName ];
browserSets = browserSets || config.browserSets; browserSets = browserSets || config.browserSets;
if ( browserSets[ 0 ] === "[" ) { if ( browserSets[ 0 ] === "[" ) {
// We got an array, parse it // We got an array, parse it
browserSets = JSON.parse( browserSets ); browserSets = JSON.parse( browserSets );
} }
timeout = timeout || 1000 * 60 * 15; timeout = timeout || 1000 * 60 * 15;
tests = grunt.config([ this.name, "tests" ]); tests = grunt.config( [ this.name, "tests" ] );
if ( pull ) { if ( pull ) {
jobName = "Pull <a href='https://github.com/jquery/jquery/pull/" + jobName = "Pull <a href='https://github.com/jquery/jquery/pull/" +
@ -28,18 +29,18 @@ module.exports = function( grunt ) {
commit + "'>" + commit.substr( 0, 10 ) + "</a>"; commit + "'>" + commit.substr( 0, 10 ) + "</a>";
} }
tests.forEach(function( test ) { tests.forEach( function( test ) {
runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test; runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test;
}); } );
testswarm.createClient({ testswarm.createClient( {
url: config.swarmUrl url: config.swarmUrl
} ) } )
.addReporter( testswarm.reporters.cli ) .addReporter( testswarm.reporters.cli )
.auth( { .auth( {
id: config.authUsername, id: config.authUsername,
token: config.authToken token: config.authToken
}) } )
.addjob( .addjob(
{ {
name: jobName, name: jobName,
@ -54,5 +55,5 @@ module.exports = function( grunt ) {
done( passed ); done( passed );
} }
); );
}); } );
}; };

View File

@ -35,7 +35,7 @@
"grunt-contrib-uglify": "0.7.0", "grunt-contrib-uglify": "0.7.0",
"grunt-contrib-watch": "0.6.1", "grunt-contrib-watch": "0.6.1",
"grunt-git-authors": "2.0.1", "grunt-git-authors": "2.0.1",
"grunt-jscs-checker": "0.8.1", "grunt-jscs": "2.1.0",
"grunt-jsonlint": "1.0.4", "grunt-jsonlint": "1.0.4",
"grunt-npmcopy": "0.1.0", "grunt-npmcopy": "0.1.0",
"gzip-js": "0.3.2", "gzip-js": "0.3.2",

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/rnotwhite", "./var/rnotwhite",
@ -15,6 +15,7 @@ var
rhash = /#.*$/, rhash = /#.*$/,
rts = /([?&])_=[^&]*/, rts = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
// #7653, #8125, #8152: local protocol detection // #7653, #8125, #8152: local protocol detection
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
rnoContent = /^(?:GET|HEAD)$/, rnoContent = /^(?:GET|HEAD)$/,
@ -62,16 +63,18 @@ function addToPrefiltersOrTransports( structure ) {
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
if ( jQuery.isFunction( func ) ) { if ( jQuery.isFunction( func ) ) {
// For each dataType in the dataTypeExpression // For each dataType in the dataTypeExpression
while ( (dataType = dataTypes[i++]) ) { while ( ( dataType = dataTypes[ i++ ] ) ) {
// Prepend if requested // Prepend if requested
if ( dataType[ 0 ] === "+" ) { if ( dataType[ 0 ] === "+" ) {
dataType = dataType.slice( 1 ) || "*"; dataType = dataType.slice( 1 ) || "*";
(structure[ dataType ] = structure[ dataType ] || []).unshift( func ); ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
// Otherwise append // Otherwise append
} else { } else {
(structure[ dataType ] = structure[ dataType ] || []).push( func ); ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
} }
} }
} }
@ -98,7 +101,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
} else if ( seekingTransport ) { } else if ( seekingTransport ) {
return !( selected = dataTypeOrTransport ); return !( selected = dataTypeOrTransport );
} }
}); } );
return selected; return selected;
} }
@ -114,7 +117,7 @@ function ajaxExtend( target, src ) {
for ( key in src ) { for ( key in src ) {
if ( src[ key ] !== undefined ) { if ( src[ key ] !== undefined ) {
( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
} }
} }
if ( deep ) { if ( deep ) {
@ -137,7 +140,7 @@ function ajaxHandleResponses( s, jqXHR, responses ) {
while ( dataTypes[ 0 ] === "*" ) { while ( dataTypes[ 0 ] === "*" ) {
dataTypes.shift(); dataTypes.shift();
if ( ct === undefined ) { if ( ct === undefined ) {
ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
} }
} }
@ -155,9 +158,10 @@ function ajaxHandleResponses( s, jqXHR, responses ) {
if ( dataTypes[ 0 ] in responses ) { if ( dataTypes[ 0 ] in responses ) {
finalDataType = dataTypes[ 0 ]; finalDataType = dataTypes[ 0 ];
} else { } else {
// Try convertible dataTypes // Try convertible dataTypes
for ( type in responses ) { for ( type in responses ) {
if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
finalDataType = type; finalDataType = type;
break; break;
} }
@ -165,6 +169,7 @@ function ajaxHandleResponses( s, jqXHR, responses ) {
firstDataType = type; firstDataType = type;
} }
} }
// Or just use first one // Or just use first one
finalDataType = finalDataType || firstDataType; finalDataType = finalDataType || firstDataType;
} }
@ -186,6 +191,7 @@ function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert( s, response, jqXHR, isSuccess ) { function ajaxConvert( s, response, jqXHR, isSuccess ) {
var conv2, current, conv, tmp, prev, var conv2, current, conv, tmp, prev,
converters = {}, converters = {},
// Work with a copy of dataTypes in case we need to modify it for conversion // Work with a copy of dataTypes in case we need to modify it for conversion
dataTypes = s.dataTypes.slice(); dataTypes = s.dataTypes.slice();
@ -238,6 +244,7 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
conv = converters[ prev + " " + tmp[ 0 ] ] || conv = converters[ prev + " " + tmp[ 0 ] ] ||
converters[ "* " + tmp[ 0 ] ]; converters[ "* " + tmp[ 0 ] ];
if ( conv ) { if ( conv ) {
// Condense equivalence converters // Condense equivalence converters
if ( conv === true ) { if ( conv === true ) {
conv = converters[ conv2 ]; conv = converters[ conv2 ];
@ -257,7 +264,7 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
if ( conv !== true ) { if ( conv !== true ) {
// Unless errors are allowed to bubble, catch and return them // Unless errors are allowed to bubble, catch and return them
if ( conv && s[ "throws" ] ) { if ( conv && s[ "throws" ] ) { // jscs:ignore requireDotNotation
response = conv( response ); response = conv( response );
} else { } else {
try { try {
@ -277,7 +284,7 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
return { state: "success", data: response }; return { state: "success", data: response };
} }
jQuery.extend({ jQuery.extend( {
// Counter for holding the number of active queries // Counter for holding the number of active queries
active: 0, active: 0,
@ -382,43 +389,59 @@ jQuery.extend({
options = options || {}; options = options || {};
var var
// Loop variable // Loop variable
i, i,
// URL without anti-cache param // URL without anti-cache param
cacheURL, cacheURL,
// Response headers as string // Response headers as string
responseHeadersString, responseHeadersString,
// timeout handle // timeout handle
timeoutTimer, timeoutTimer,
// Url cleanup var // Url cleanup var
urlAnchor, urlAnchor,
// To know if global events are to be dispatched // To know if global events are to be dispatched
fireGlobals, fireGlobals,
transport, transport,
// Response headers // Response headers
responseHeaders, responseHeaders,
// Create the final options object // Create the final options object
s = jQuery.ajaxSetup( {}, options ), s = jQuery.ajaxSetup( {}, options ),
// Callbacks context // Callbacks context
callbackContext = s.context || s, callbackContext = s.context || s,
// Context for global events is callbackContext if it is a DOM node or jQuery collection // Context for global events is callbackContext if it is a DOM node or jQuery collection
globalEventContext = s.context && globalEventContext = s.context &&
( callbackContext.nodeType || callbackContext.jquery ) ? ( callbackContext.nodeType || callbackContext.jquery ) ?
jQuery( callbackContext ) : jQuery( callbackContext ) :
jQuery.event, jQuery.event,
// Deferreds // Deferreds
deferred = jQuery.Deferred(), deferred = jQuery.Deferred(),
completeDeferred = jQuery.Callbacks("once memory"), completeDeferred = jQuery.Callbacks( "once memory" ),
// Status-dependent callbacks // Status-dependent callbacks
statusCode = s.statusCode || {}, statusCode = s.statusCode || {},
// Headers (they are sent all at once) // Headers (they are sent all at once)
requestHeaders = {}, requestHeaders = {},
requestHeadersNames = {}, requestHeadersNames = {},
// The jqXHR state // The jqXHR state
state = 0, state = 0,
// Default abort message // Default abort message
strAbort = "canceled", strAbort = "canceled",
// Fake xhr // Fake xhr
jqXHR = { jqXHR = {
readyState: 0, readyState: 0,
@ -429,8 +452,8 @@ jQuery.extend({
if ( state === 2 ) { if ( state === 2 ) {
if ( !responseHeaders ) { if ( !responseHeaders ) {
responseHeaders = {}; responseHeaders = {};
while ( (match = rheaders.exec( responseHeadersString )) ) { while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
} }
} }
match = responseHeaders[ key.toLowerCase() ]; match = responseHeaders[ key.toLowerCase() ];
@ -467,10 +490,12 @@ jQuery.extend({
if ( map ) { if ( map ) {
if ( state < 2 ) { if ( state < 2 ) {
for ( code in map ) { for ( code in map ) {
// Lazy-add the new callback in a way that preserves old ones // Lazy-add the new callback in a way that preserves old ones
statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
} }
} else { } else {
// Execute the appropriate callbacks // Execute the appropriate callbacks
jqXHR.always( map[ jqXHR.status ] ); jqXHR.always( map[ jqXHR.status ] );
} }
@ -513,12 +538,14 @@ jQuery.extend({
// IE throws exception if url is malformed, e.g. http://example.com:80x/ // IE throws exception if url is malformed, e.g. http://example.com:80x/
try { try {
urlAnchor.href = s.url; urlAnchor.href = s.url;
// Support: IE8-11+ // Support: IE8-11+
// Anchor's host property isn't correctly set when s.url is relative // Anchor's host property isn't correctly set when s.url is relative
urlAnchor.href = urlAnchor.href; urlAnchor.href = urlAnchor.href;
s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
urlAnchor.protocol + "//" + urlAnchor.host; urlAnchor.protocol + "//" + urlAnchor.host;
} catch ( e ) { } catch ( e ) {
// If there is an error parsing the URL, assume it is crossDomain, // If there is an error parsing the URL, assume it is crossDomain,
// it can be rejected by the transport if it is invalid // it can be rejected by the transport if it is invalid
s.crossDomain = true; s.crossDomain = true;
@ -544,7 +571,7 @@ jQuery.extend({
// Watch for a new set of requests // Watch for a new set of requests
if ( fireGlobals && jQuery.active++ === 0 ) { if ( fireGlobals && jQuery.active++ === 0 ) {
jQuery.event.trigger("ajaxStart"); jQuery.event.trigger( "ajaxStart" );
} }
// Uppercase the type // Uppercase the type
@ -563,6 +590,7 @@ jQuery.extend({
// If data is available, append data to url // If data is available, append data to url
if ( s.data ) { if ( s.data ) {
cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
// #9682: remove data so that it's not used in an eventual retry // #9682: remove data so that it's not used in an eventual retry
delete s.data; delete s.data;
} }
@ -597,8 +625,8 @@ jQuery.extend({
// Set the Accepts header for the server, depending on the dataType // Set the Accepts header for the server, depending on the dataType
jqXHR.setRequestHeader( jqXHR.setRequestHeader(
"Accept", "Accept",
s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
s.accepts[ s.dataTypes[0] ] + s.accepts[ s.dataTypes[ 0 ] ] +
( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
s.accepts[ "*" ] s.accepts[ "*" ]
); );
@ -645,8 +673,8 @@ jQuery.extend({
// Timeout // Timeout
if ( s.async && s.timeout > 0 ) { if ( s.async && s.timeout > 0 ) {
timeoutTimer = window.setTimeout(function() { timeoutTimer = window.setTimeout( function() {
jqXHR.abort("timeout"); jqXHR.abort( "timeout" );
}, s.timeout ); }, s.timeout );
} }
@ -654,9 +682,11 @@ jQuery.extend({
state = 1; state = 1;
transport.send( requestHeaders, done ); transport.send( requestHeaders, done );
} catch ( e ) { } catch ( e ) {
// Propagate exception as error if not done // Propagate exception as error if not done
if ( state < 2 ) { if ( state < 2 ) {
done( -1, e ); done( -1, e );
// Simply rethrow otherwise // Simply rethrow otherwise
} else { } else {
throw e; throw e;
@ -708,11 +738,11 @@ jQuery.extend({
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
if ( s.ifModified ) { if ( s.ifModified ) {
modified = jqXHR.getResponseHeader("Last-Modified"); modified = jqXHR.getResponseHeader( "Last-Modified" );
if ( modified ) { if ( modified ) {
jQuery.lastModified[ cacheURL ] = modified; jQuery.lastModified[ cacheURL ] = modified;
} }
modified = jqXHR.getResponseHeader("etag"); modified = jqXHR.getResponseHeader( "etag" );
if ( modified ) { if ( modified ) {
jQuery.etag[ cacheURL ] = modified; jQuery.etag[ cacheURL ] = modified;
} }
@ -734,6 +764,7 @@ jQuery.extend({
isSuccess = !error; isSuccess = !error;
} }
} else { } else {
// We extract error from statusText // We extract error from statusText
// then normalize statusText and status for non-aborts // then normalize statusText and status for non-aborts
error = statusText; error = statusText;
@ -770,9 +801,10 @@ jQuery.extend({
if ( fireGlobals ) { if ( fireGlobals ) {
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
// Handle the global AJAX counter // Handle the global AJAX counter
if ( !( --jQuery.active ) ) { if ( !( --jQuery.active ) ) {
jQuery.event.trigger("ajaxStop"); jQuery.event.trigger( "ajaxStop" );
} }
} }
} }
@ -787,10 +819,11 @@ jQuery.extend({
getScript: function( url, callback ) { getScript: function( url, callback ) {
return jQuery.get( url, undefined, callback, "script" ); return jQuery.get( url, undefined, callback, "script" );
} }
}); } );
jQuery.each( [ "get", "post" ], function( i, method ) { jQuery.each( [ "get", "post" ], function( i, method ) {
jQuery[ method ] = function( url, data, callback, type ) { jQuery[ method ] = function( url, data, callback, type ) {
// shift arguments if data argument was omitted // shift arguments if data argument was omitted
if ( jQuery.isFunction( data ) ) { if ( jQuery.isFunction( data ) ) {
type = type || callback; type = type || callback;
@ -799,7 +832,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
} }
// The url can be an options object (which then must have .url) // The url can be an options object (which then must have .url)
return jQuery.ajax( jQuery.extend({ return jQuery.ajax( jQuery.extend( {
url: url, url: url,
type: method, type: method,
dataType: type, dataType: type,
@ -807,7 +840,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
success: callback success: callback
}, jQuery.isPlainObject( url ) && url ) ); }, jQuery.isPlainObject( url ) && url ) );
}; };
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"./var/nonce", "./var/nonce",
"./var/rquery", "./var/rquery",
@ -9,14 +9,14 @@ var oldCallbacks = [],
rjsonp = /(=)\?(?=&|$)|\?\?/; rjsonp = /(=)\?(?=&|$)|\?\?/;
// Default jsonp settings // Default jsonp settings
jQuery.ajaxSetup({ jQuery.ajaxSetup( {
jsonp: "callback", jsonp: "callback",
jsonpCallback: function() { jsonpCallback: function() {
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
this[ callback ] = true; this[ callback ] = true;
return callback; return callback;
} }
}); } );
// Detect, normalize options and install callbacks for jsonp requests // Detect, normalize options and install callbacks for jsonp requests
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
@ -26,7 +26,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
"url" : "url" :
typeof s.data === "string" && typeof s.data === "string" &&
( s.contentType || "" ) ( s.contentType || "" )
.indexOf("application/x-www-form-urlencoded") === 0 && .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
rjsonp.test( s.data ) && "data" rjsonp.test( s.data ) && "data"
); );
@ -46,7 +46,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
} }
// Use data converter to retrieve json after script execution // Use data converter to retrieve json after script execution
s.converters["script json"] = function() { s.converters[ "script json" ] = function() {
if ( !responseContainer ) { if ( !responseContainer ) {
jQuery.error( callbackName + " was not called" ); jQuery.error( callbackName + " was not called" );
} }
@ -63,7 +63,8 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
}; };
// Clean-up function (fires after converters) // Clean-up function (fires after converters)
jqXHR.always(function() { jqXHR.always( function() {
// If previous value didn't exist - remove it // If previous value didn't exist - remove it
if ( overwritten === undefined ) { if ( overwritten === undefined ) {
jQuery( window ).removeProp( callbackName ); jQuery( window ).removeProp( callbackName );
@ -75,6 +76,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
// Save back as free // Save back as free
if ( s[ callbackName ] ) { if ( s[ callbackName ] ) {
// make sure that re-using the options doesn't screw things around // make sure that re-using the options doesn't screw things around
s.jsonpCallback = originalSettings.jsonpCallback; s.jsonpCallback = originalSettings.jsonpCallback;
@ -88,11 +90,11 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
} }
responseContainer = overwritten = undefined; responseContainer = overwritten = undefined;
}); } );
// Delegate to script // Delegate to script
return "script"; return "script";
} }
}); } );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../core/parseHTML", "../core/parseHTML",
"../ajax", "../ajax",
@ -13,7 +13,7 @@ define([
jQuery.fn.load = function( url, params, callback ) { jQuery.fn.load = function( url, params, callback ) {
var selector, response, type, var selector, response, type,
self = this, self = this,
off = url.indexOf(" "); off = url.indexOf( " " );
if ( off > -1 ) { if ( off > -1 ) {
selector = jQuery.trim( url.slice( off, url.length ) ); selector = jQuery.trim( url.slice( off, url.length ) );
@ -34,7 +34,7 @@ jQuery.fn.load = function( url, params, callback ) {
// If we have elements to modify, make the request // If we have elements to modify, make the request
if ( self.length > 0 ) { if ( self.length > 0 ) {
jQuery.ajax({ jQuery.ajax( {
url: url, url: url,
// If "type" variable is undefined, then "GET" method will be used. // If "type" variable is undefined, then "GET" method will be used.
@ -43,7 +43,7 @@ jQuery.fn.load = function( url, params, callback ) {
type: type || "GET", type: type || "GET",
dataType: "html", dataType: "html",
data: params data: params
}).done(function( responseText ) { } ).done( function( responseText ) {
// Save response for use in complete callback // Save response for use in complete callback
response = arguments; response = arguments;
@ -52,7 +52,7 @@ jQuery.fn.load = function( url, params, callback ) {
// If a selector was specified, locate the right elements in a dummy div // If a selector was specified, locate the right elements in a dummy div
// Exclude scripts to avoid IE 'Permission Denied' errors // Exclude scripts to avoid IE 'Permission Denied' errors
jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
// Otherwise use the full result // Otherwise use the full result
responseText ); responseText );
@ -60,14 +60,14 @@ jQuery.fn.load = function( url, params, callback ) {
// If the request succeeds, this function gets "data", "status", "jqXHR" // If the request succeeds, this function gets "data", "status", "jqXHR"
// but they are ignored because response was set above. // but they are ignored because response was set above.
// If it fails, this function gets "jqXHR", "status", "error" // If it fails, this function gets "jqXHR", "status", "error"
}).always( callback && function( jqXHR, status ) { } ).always( callback && function( jqXHR, status ) {
self.each( function() { self.each( function() {
callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] ); callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] );
}); } );
}); } );
} }
return this; return this;
}; };
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -10,4 +10,4 @@ jQuery.parseJSON = function( data ) {
return jQuery.parseJSON; return jQuery.parseJSON;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -28,4 +28,4 @@ jQuery.parseXML = function( data ) {
return jQuery.parseXML; return jQuery.parseXML;
}); } );

View File

@ -1,11 +1,11 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"../ajax" "../ajax"
], function( jQuery, document ) { ], function( jQuery, document ) {
// Install script dataType // Install script dataType
jQuery.ajaxSetup({ jQuery.ajaxSetup( {
accepts: { accepts: {
script: "text/javascript, application/javascript, " + script: "text/javascript, application/javascript, " +
"application/ecmascript, application/x-ecmascript" "application/ecmascript, application/x-ecmascript"
@ -19,7 +19,7 @@ jQuery.ajaxSetup({
return text; return text;
} }
} }
}); } );
// Handle cache's special case and global // Handle cache's special case and global
jQuery.ajaxPrefilter( "script", function( s ) { jQuery.ajaxPrefilter( "script", function( s ) {
@ -30,22 +30,22 @@ jQuery.ajaxPrefilter( "script", function( s ) {
s.type = "GET"; s.type = "GET";
s.global = false; s.global = false;
} }
}); } );
// Bind script tag hack transport // Bind script tag hack transport
jQuery.ajaxTransport( "script", function(s) { jQuery.ajaxTransport( "script", function( s ) {
// This transport only deals with cross domain requests // This transport only deals with cross domain requests
if ( s.crossDomain ) { if ( s.crossDomain ) {
var script, var script,
head = document.head || jQuery("head")[0] || document.documentElement; head = document.head || jQuery( "head" )[ 0 ] || document.documentElement;
return { return {
send: function( _, callback ) { send: function( _, callback ) {
script = document.createElement("script"); script = document.createElement( "script" );
if ( s.scriptCharset ) { if ( s.scriptCharset ) {
script.charset = s.scriptCharset; script.charset = s.scriptCharset;
@ -87,6 +87,6 @@ jQuery.ajaxTransport( "script", function(s) {
} }
}; };
} }
}); } );
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return window.location; return window.location;
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"../../core" "../../core"
], function( jQuery ) { ], function( jQuery ) {
return jQuery.now(); return jQuery.now();
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return (/\?/); return ( /\?/ );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"../var/support", "../var/support",
@ -8,6 +8,7 @@ define([
// Create the request object // Create the request object
// (This is still attached to ajaxSettings for backward compatibility) // (This is still attached to ajaxSettings for backward compatibility)
jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?
// Support: IE8 // Support: IE8
function() { function() {
@ -35,6 +36,7 @@ jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?
return /^(get|post|head|put|delete|options)$/i.test( this.type ) && return /^(get|post|head|put|delete|options)$/i.test( this.type ) &&
createStandardXHR() || createActiveXHR(); createStandardXHR() || createActiveXHR();
} : } :
// For all other browsers, use the standard XMLHttpRequest object // For all other browsers, use the standard XMLHttpRequest object
createStandardXHR; createStandardXHR;
@ -47,7 +49,8 @@ xhrSupported = support.ajax = !!xhrSupported;
// Create transport if the browser can provide an xhr // Create transport if the browser can provide an xhr
if ( xhrSupported ) { if ( xhrSupported ) {
jQuery.ajaxTransport(function( options ) { jQuery.ajaxTransport( function( options ) {
// Cross domain only allowed if supported through XMLHttpRequest // Cross domain only allowed if supported through XMLHttpRequest
if ( !options.crossDomain || support.cors ) { if ( !options.crossDomain || support.cors ) {
@ -84,12 +87,13 @@ if ( xhrSupported ) {
// akin to a jigsaw puzzle, we simply never set it to be sure. // akin to a jigsaw puzzle, we simply never set it to be sure.
// (it can always be set on a per-request basis or even using ajaxSetup) // (it can always be set on a per-request basis or even using ajaxSetup)
// For same-domain requests, won't change header if already provided. // For same-domain requests, won't change header if already provided.
if ( !options.crossDomain && !headers["X-Requested-With"] ) { if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
headers["X-Requested-With"] = "XMLHttpRequest"; headers[ "X-Requested-With" ] = "XMLHttpRequest";
} }
// Set headers // Set headers
for ( i in headers ) { for ( i in headers ) {
// Support: IE<9 // Support: IE<9
// IE's ActiveXObject throws a 'Type Mismatch' exception when setting // IE's ActiveXObject throws a 'Type Mismatch' exception when setting
// request header to a null-value. // request header to a null-value.
@ -112,6 +116,7 @@ if ( xhrSupported ) {
// Was never called and is aborted or complete // Was never called and is aborted or complete
if ( callback && ( isAbort || xhr.readyState === 4 ) ) { if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
// Clean up // Clean up
callback = undefined; callback = undefined;
xhr.onreadystatechange = jQuery.noop; xhr.onreadystatechange = jQuery.noop;
@ -137,6 +142,7 @@ if ( xhrSupported ) {
try { try {
statusText = xhr.statusText; statusText = xhr.statusText;
} catch ( e ) { } catch ( e ) {
// We normalize with Webkit giving an empty statusText // We normalize with Webkit giving an empty statusText
statusText = ""; statusText = "";
} }
@ -148,6 +154,7 @@ if ( xhrSupported ) {
// can do given current implementations) // can do given current implementations)
if ( !status && options.isLocal && !options.crossDomain ) { if ( !status && options.isLocal && !options.crossDomain ) {
status = responses.text ? 200 : 404; status = responses.text ? 200 : 404;
// IE - #1450: sometimes returns 1223 when it should be 204 // IE - #1450: sometimes returns 1223 when it should be 204
} else if ( status === 1223 ) { } else if ( status === 1223 ) {
status = 204; status = 204;
@ -162,9 +169,11 @@ if ( xhrSupported ) {
}; };
if ( !options.async ) { if ( !options.async ) {
// if we're in sync mode we fire the callback // if we're in sync mode we fire the callback
callback(); callback();
} else { } else {
// Add to the list of active xhr callbacks // Add to the list of active xhr callbacks
xhr.onreadystatechange = callback; xhr.onreadystatechange = callback;
} }
@ -177,7 +186,7 @@ if ( xhrSupported ) {
} }
}; };
} }
}); } );
} }
// Functions to create xhrs // Functions to create xhrs
@ -193,4 +202,4 @@ function createActiveXHR() {
} catch ( e ) {} } catch ( e ) {}
} }
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./attributes/val", "./attributes/val",
"./attributes/attr", "./attributes/attr",
@ -8,4 +8,4 @@ define([
// Return jQuery for attributes-only inclusion // Return jQuery for attributes-only inclusion
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../core/access", "../core/access",
"./support", "./support",
@ -12,7 +12,7 @@ var boolHook,
ruseDefault = /^(?:checked|selected)$/i, ruseDefault = /^(?:checked|selected)$/i,
getSetInput = support.input; getSetInput = support.input;
jQuery.fn.extend({ jQuery.fn.extend( {
attr: function( name, value ) { attr: function( name, value ) {
return access( this, jQuery.attr, name, value, arguments.length > 1 ); return access( this, jQuery.attr, name, value, arguments.length > 1 );
}, },
@ -20,11 +20,11 @@ jQuery.fn.extend({
removeAttr: function( name ) { removeAttr: function( name ) {
return this.each( function() { return this.each( function() {
jQuery.removeAttr( this, name ); jQuery.removeAttr( this, name );
}); } );
} }
}); } );
jQuery.extend({ jQuery.extend( {
attr: function( elem, name, value ) { attr: function( elem, name, value ) {
var ret, hooks, var ret, hooks,
nType = elem.nodeType; nType = elem.nodeType;
@ -97,7 +97,7 @@ jQuery.extend({
attrNames = value && value.match( rnotwhite ); attrNames = value && value.match( rnotwhite );
if ( attrNames && elem.nodeType === 1 ) { if ( attrNames && elem.nodeType === 1 ) {
while ( ( name = attrNames[i++] ) ) { while ( ( name = attrNames[ i++ ] ) ) {
propName = jQuery.propFix[ name ] || name; propName = jQuery.propFix[ name ] || name;
// Boolean attributes get special treatment (#10870) // Boolean attributes get special treatment (#10870)
@ -119,7 +119,7 @@ jQuery.extend({
} }
} }
} }
}); } );
// Hooks for boolean attributes // Hooks for boolean attributes
boolHook = { boolHook = {
@ -168,7 +168,7 @@ jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name )
} }
}; };
} }
}); } );
// fix oldIE attroperties // fix oldIE attroperties
if ( !getSetInput ) { if ( !getSetInput ) {
@ -198,4 +198,4 @@ if ( !support.style ) {
}; };
} }
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/rnotwhite", "../var/rnotwhite",
"../core/init" "../core/init"
@ -10,7 +10,7 @@ function getClass( elem ) {
return elem.getAttribute && elem.getAttribute( "class" ) || ""; return elem.getAttribute && elem.getAttribute( "class" ) || "";
} }
jQuery.fn.extend({ jQuery.fn.extend( {
addClass: function( value ) { addClass: function( value ) {
var classes, elem, cur, curValue, clazz, j, finalValue, var classes, elem, cur, curValue, clazz, j, finalValue,
i = 0, i = 0,
@ -18,12 +18,13 @@ jQuery.fn.extend({
proceed = typeof value === "string" && value; proceed = typeof value === "string" && value;
if ( jQuery.isFunction( value ) ) { if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) { return this.each( function( j ) {
jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
}); } );
} }
if ( proceed ) { if ( proceed ) {
// The disjunction here is for better compressibility (see removeClass) // The disjunction here is for better compressibility (see removeClass)
classes = ( value || "" ).match( rnotwhite ) || []; classes = ( value || "" ).match( rnotwhite ) || [];
@ -35,7 +36,7 @@ jQuery.fn.extend({
if ( cur ) { if ( cur ) {
j = 0; j = 0;
while ( (clazz = classes[j++]) ) { while ( ( clazz = classes[ j++ ] ) ) {
if ( cur.indexOf( " " + clazz + " " ) < 0 ) { if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
cur += clazz + " "; cur += clazz + " ";
} }
@ -60,9 +61,9 @@ jQuery.fn.extend({
proceed = arguments.length === 0 || typeof value === "string" && value; proceed = arguments.length === 0 || typeof value === "string" && value;
if ( jQuery.isFunction( value ) ) { if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) { return this.each( function( j ) {
jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
}); } );
} }
if ( proceed ) { if ( proceed ) {
classes = ( value || "" ).match( rnotwhite ) || []; classes = ( value || "" ).match( rnotwhite ) || [];
@ -77,7 +78,8 @@ jQuery.fn.extend({
if ( cur ) { if ( cur ) {
j = 0; j = 0;
while ( (clazz = classes[j++]) ) { while ( ( clazz = classes[ j++ ] ) ) {
// Remove *all* instances // Remove *all* instances
while ( cur.indexOf( " " + clazz + " " ) > -1 ) { while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
cur = cur.replace( " " + clazz + " ", " " ); cur = cur.replace( " " + clazz + " ", " " );
@ -104,15 +106,15 @@ jQuery.fn.extend({
} }
if ( jQuery.isFunction( value ) ) { if ( jQuery.isFunction( value ) ) {
return this.each(function( i ) { return this.each( function( i ) {
jQuery( this ).toggleClass( jQuery( this ).toggleClass(
value.call( this, i, getClass( this ), stateVal ), value.call( this, i, getClass( this ), stateVal ),
stateVal stateVal
); );
}); } );
} }
return this.each(function() { return this.each( function() {
var className, i, self, classNames; var className, i, self, classNames;
if ( type === "string" ) { if ( type === "string" ) {
@ -153,7 +155,7 @@ jQuery.fn.extend({
); );
} }
} }
}); } );
}, },
hasClass: function( selector ) { hasClass: function( selector ) {
@ -161,8 +163,8 @@ jQuery.fn.extend({
i = 0, i = 0,
l = this.length; l = this.length;
for ( ; i < l; i++ ) { for ( ; i < l; i++ ) {
if ( this[i].nodeType === 1 && if ( this[ i ].nodeType === 1 &&
( " " + getClass( this[i] ) + " " ).replace( rclass, " " ) ( " " + getClass( this[ i ] ) + " " ).replace( rclass, " " )
.indexOf( className ) > -1 .indexOf( className ) > -1
) { ) {
return true; return true;
@ -171,6 +173,6 @@ jQuery.fn.extend({
return false; return false;
} }
}); } );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../core/access", "../core/access",
"./support", "./support",
@ -8,24 +8,25 @@ define([
var rfocusable = /^(?:input|select|textarea|button|object)$/i, var rfocusable = /^(?:input|select|textarea|button|object)$/i,
rclickable = /^(?:a|area)$/i; rclickable = /^(?:a|area)$/i;
jQuery.fn.extend({ jQuery.fn.extend( {
prop: function( name, value ) { prop: function( name, value ) {
return access( this, jQuery.prop, name, value, arguments.length > 1 ); return access( this, jQuery.prop, name, value, arguments.length > 1 );
}, },
removeProp: function( name ) { removeProp: function( name ) {
name = jQuery.propFix[ name ] || name; name = jQuery.propFix[ name ] || name;
return this.each(function() { return this.each( function() {
// try/catch handles cases where IE balks (such as removing a property on window) // try/catch handles cases where IE balks (such as removing a property on window)
try { try {
this[ name ] = undefined; this[ name ] = undefined;
delete this[ name ]; delete this[ name ];
} catch ( e ) {} } catch ( e ) {}
}); } );
} }
}); } );
jQuery.extend({ jQuery.extend( {
prop: function( elem, name, value ) { prop: function( elem, name, value ) {
var ret, hooks, var ret, hooks,
nType = elem.nodeType; nType = elem.nodeType;
@ -61,6 +62,7 @@ jQuery.extend({
propHooks: { propHooks: {
tabIndex: { tabIndex: {
get: function( elem ) { get: function( elem ) {
// elem.tabIndex doesn't always return the // elem.tabIndex doesn't always return the
// correct value when it hasn't been explicitly set // correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
@ -81,7 +83,7 @@ jQuery.extend({
"for": "htmlFor", "for": "htmlFor",
"class": "className" "class": "className"
} }
}); } );
if ( !support.optSelected ) { if ( !support.optSelected ) {
jQuery.propHooks.selected = { jQuery.propHooks.selected = {
@ -101,7 +103,7 @@ if ( !support.optSelected ) {
}; };
} }
jQuery.each([ jQuery.each( [
"tabIndex", "tabIndex",
"readOnly", "readOnly",
"maxLength", "maxLength",
@ -114,6 +116,6 @@ jQuery.each([
"contentEditable" "contentEditable"
], function() { ], function() {
jQuery.propFix[ this.toLowerCase() ] = this; jQuery.propFix[ this.toLowerCase() ] = this;
}); } );
}); } );

View File

@ -1,9 +1,9 @@
define([ define( [
"../var/document", "../var/document",
"../var/support" "../var/support"
], function( document, support ) { ], function( document, support ) {
(function() { ( function() {
var a, var a,
input = document.createElement( "input" ), input = document.createElement( "input" ),
div = document.createElement( "div" ), div = document.createElement( "div" ),
@ -12,6 +12,7 @@ define([
// Setup // Setup
div.innerHTML = " <link/><a href='/a'>a</a>"; div.innerHTML = " <link/><a href='/a'>a</a>";
// Support: Windows Web Apps (WWA) // Support: Windows Web Apps (WWA)
// `type` must use .setAttribute for WWA (#14901) // `type` must use .setAttribute for WWA (#14901)
input.setAttribute( "type", "checkbox" ); input.setAttribute( "type", "checkbox" );
@ -24,7 +25,7 @@ define([
// Get the style information from getAttribute // Get the style information from getAttribute
// (IE uses .cssText instead) // (IE uses .cssText instead)
support.style = /top/.test( a.getAttribute("style") ); support.style = /top/.test( a.getAttribute( "style" ) );
// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
support.checkOn = !!input.value; support.checkOn = !!input.value;
@ -49,8 +50,8 @@ define([
input.value = "t"; input.value = "t";
input.setAttribute( "type", "radio" ); input.setAttribute( "type", "radio" );
support.radioValue = input.value === "t"; support.radioValue = input.value === "t";
})(); } )();
return support; return support;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"./support", "./support",
"../core/init" "../core/init"
@ -6,25 +6,31 @@ define([
var rreturn = /\r/g; var rreturn = /\r/g;
jQuery.fn.extend({ jQuery.fn.extend( {
val: function( value ) { val: function( value ) {
var hooks, ret, isFunction, var hooks, ret, isFunction,
elem = this[0]; elem = this[ 0 ];
if ( !arguments.length ) { if ( !arguments.length ) {
if ( elem ) { if ( elem ) {
hooks = jQuery.valHooks[ elem.type ] || hooks = jQuery.valHooks[ elem.type ] ||
jQuery.valHooks[ elem.nodeName.toLowerCase() ]; jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { if (
hooks &&
"get" in hooks &&
( ret = hooks.get( elem, "value" ) ) !== undefined
) {
return ret; return ret;
} }
ret = elem.value; ret = elem.value;
return typeof ret === "string" ? return typeof ret === "string" ?
// handle most common string cases // handle most common string cases
ret.replace(rreturn, "") : ret.replace( rreturn, "" ) :
// handle cases where value is null/undef or number // handle cases where value is null/undef or number
ret == null ? "" : ret; ret == null ? "" : ret;
} }
@ -34,7 +40,7 @@ jQuery.fn.extend({
isFunction = jQuery.isFunction( value ); isFunction = jQuery.isFunction( value );
return this.each(function( i ) { return this.each( function( i ) {
var val; var val;
if ( this.nodeType !== 1 ) { if ( this.nodeType !== 1 ) {
@ -55,23 +61,24 @@ jQuery.fn.extend({
} else if ( jQuery.isArray( val ) ) { } else if ( jQuery.isArray( val ) ) {
val = jQuery.map( val, function( value ) { val = jQuery.map( val, function( value ) {
return value == null ? "" : value + ""; return value == null ? "" : value + "";
}); } );
} }
hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
// If set returns undefined, fall back to normal setting // If set returns undefined, fall back to normal setting
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
this.value = val; this.value = val;
} }
}); } );
} }
}); } );
jQuery.extend({ jQuery.extend( {
valHooks: { valHooks: {
option: { option: {
get: function( elem ) { get: function( elem ) {
// Support: IE<11 // Support: IE<11
// option.value not trimmed (#14858) // option.value not trimmed (#14858)
return jQuery.trim( elem.value ); return jQuery.trim( elem.value );
@ -96,10 +103,11 @@ jQuery.extend({
// Support: IE<10 // Support: IE<10
// IE8-9 doesn't update selected after form reset (#2551) // IE8-9 doesn't update selected after form reset (#2551)
if ( ( option.selected || i === index ) && if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup // Don't return options that are disabled or in a disabled optgroup
( support.optDisabled ? ( support.optDisabled ?
!option.disabled : !option.disabled :
option.getAttribute("disabled") === null ) && option.getAttribute( "disabled" ) === null ) &&
( !option.parentNode.disabled || ( !option.parentNode.disabled ||
!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
@ -127,8 +135,10 @@ jQuery.extend({
while ( i-- ) { while ( i-- ) {
option = options[ i ]; option = options[ i ];
if ( (option.selected = if (
jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1) ) { option.selected =
jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
) {
optionSet = true; optionSet = true;
} }
} }
@ -142,22 +152,22 @@ jQuery.extend({
} }
} }
} }
}); } );
// Radios and checkboxes getter/setter // Radios and checkboxes getter/setter
jQuery.each([ "radio", "checkbox" ], function() { jQuery.each( [ "radio", "checkbox" ], function() {
jQuery.valHooks[ this ] = { jQuery.valHooks[ this ] = {
set: function( elem, value ) { set: function( elem, value ) {
if ( jQuery.isArray( value ) ) { if ( jQuery.isArray( value ) ) {
return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) > -1 ); return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
} }
} }
}; };
if ( !support.checkOn ) { if ( !support.checkOn ) {
jQuery.valHooks[ this ].get = function( elem ) { jQuery.valHooks[ this ].get = function( elem ) {
return elem.getAttribute("value") === null ? "on" : elem.value; return elem.getAttribute( "value" ) === null ? "on" : elem.value;
}; };
} }
}); } );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/rnotwhite" "./var/rnotwhite"
], function( jQuery, rnotwhite ) { ], function( jQuery, rnotwhite ) {
@ -8,7 +8,7 @@ function createOptions( options ) {
var object = {}; var object = {};
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
object[ flag ] = true; object[ flag ] = true;
}); } );
return object; return object;
} }
@ -44,18 +44,25 @@ jQuery.Callbacks = function( options ) {
var // Flag to know if list is currently firing var // Flag to know if list is currently firing
firing, firing,
// Last fire value for non-forgettable lists // Last fire value for non-forgettable lists
memory, memory,
// Flag to know if list was already fired // Flag to know if list was already fired
fired, fired,
// Flag to prevent firing // Flag to prevent firing
locked, locked,
// Actual callback list // Actual callback list
list = [], list = [],
// Queue of execution data for repeatable lists // Queue of execution data for repeatable lists
queue = [], queue = [],
// Index of currently firing callback (modified by add/remove as needed) // Index of currently firing callback (modified by add/remove as needed)
firingIndex = -1, firingIndex = -1,
// Fire callbacks // Fire callbacks
fire = function() { fire = function() {
@ -114,18 +121,19 @@ jQuery.Callbacks = function( options ) {
queue.push( memory ); queue.push( memory );
} }
(function add( args ) { ( function add( args ) {
jQuery.each( args, function( _, arg ) { jQuery.each( args, function( _, arg ) {
if ( jQuery.isFunction( arg ) ) { if ( jQuery.isFunction( arg ) ) {
if ( !options.unique || !self.has( arg ) ) { if ( !options.unique || !self.has( arg ) ) {
list.push( arg ); list.push( arg );
} }
} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
// Inspect recursively // Inspect recursively
add( arg ); add( arg );
} }
}); } );
})( arguments ); } )( arguments );
if ( memory && !firing ) { if ( memory && !firing ) {
fire(); fire();
@ -146,7 +154,7 @@ jQuery.Callbacks = function( options ) {
firingIndex--; firingIndex--;
} }
} }
}); } );
return this; return this;
}, },
@ -221,4 +229,4 @@ jQuery.Callbacks = function( options ) {
}; };
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./var/deletedIds", "./var/deletedIds",
"./var/document", "./var/document",
"./var/slice", "./var/slice",
@ -17,6 +17,7 @@ var
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced' // The jQuery object is actually just the init constructor 'enhanced'
// Need init if jQuery is called (just allow error to be thrown if not included) // Need init if jQuery is called (just allow error to be thrown if not included)
return new jQuery.fn.init( selector, context ); return new jQuery.fn.init( selector, context );
@ -36,6 +37,7 @@ var
}; };
jQuery.fn = jQuery.prototype = { jQuery.fn = jQuery.prototype = {
// The current version of jQuery being used // The current version of jQuery being used
jquery: version, jquery: version,
@ -80,9 +82,9 @@ jQuery.fn = jQuery.prototype = {
}, },
map: function( callback ) { map: function( callback ) {
return this.pushStack( jQuery.map(this, function( elem, i ) { return this.pushStack( jQuery.map( this, function( elem, i ) {
return callback.call( elem, i, elem ); return callback.call( elem, i, elem );
})); } ) );
}, },
slice: function() { slice: function() {
@ -100,11 +102,11 @@ jQuery.fn = jQuery.prototype = {
eq: function( i ) { eq: function( i ) {
var len = this.length, var len = this.length,
j = +i + ( i < 0 ? len : 0 ); j = +i + ( i < 0 ? len : 0 );
return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
}, },
end: function() { end: function() {
return this.prevObject || this.constructor(null); return this.prevObject || this.constructor( null );
}, },
// For internal use only. // For internal use only.
@ -116,7 +118,7 @@ jQuery.fn = jQuery.prototype = {
jQuery.extend = jQuery.fn.extend = function() { jQuery.extend = jQuery.fn.extend = function() {
var src, copyIsArray, copy, name, options, clone, var src, copyIsArray, copy, name, options, clone,
target = arguments[0] || {}, target = arguments[ 0 ] || {},
i = 1, i = 1,
length = arguments.length, length = arguments.length,
deep = false; deep = false;
@ -131,7 +133,7 @@ jQuery.extend = jQuery.fn.extend = function() {
} }
// Handle case when target is a string or something (possible in deep copy) // Handle case when target is a string or something (possible in deep copy)
if ( typeof target !== "object" && !jQuery.isFunction(target) ) { if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
target = {}; target = {};
} }
@ -142,8 +144,10 @@ jQuery.extend = jQuery.fn.extend = function() {
} }
for ( ; i < length; i++ ) { for ( ; i < length; i++ ) {
// Only deal with non-null/undefined values // Only deal with non-null/undefined values
if ( (options = arguments[ i ]) != null ) { if ( ( options = arguments[ i ] ) != null ) {
// Extend the base object // Extend the base object
for ( name in options ) { for ( name in options ) {
src = target[ name ]; src = target[ name ];
@ -155,15 +159,15 @@ jQuery.extend = jQuery.fn.extend = function() {
} }
// Recurse if we're merging plain objects or arrays // Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject(copy) || if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
(copyIsArray = jQuery.isArray(copy)) ) ) { ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
if ( copyIsArray ) { if ( copyIsArray ) {
copyIsArray = false; copyIsArray = false;
clone = src && jQuery.isArray(src) ? src : []; clone = src && jQuery.isArray( src ) ? src : [];
} else { } else {
clone = src && jQuery.isPlainObject(src) ? src : {}; clone = src && jQuery.isPlainObject( src ) ? src : {};
} }
// Never move original objects, clone them // Never move original objects, clone them
@ -181,7 +185,8 @@ jQuery.extend = jQuery.fn.extend = function() {
return target; return target;
}; };
jQuery.extend({ jQuery.extend( {
// Unique for each copy of jQuery on the page // Unique for each copy of jQuery on the page
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
@ -198,11 +203,11 @@ jQuery.extend({
// Since version 1.3, DOM methods and functions like alert // Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968). // aren't supported. They return false on IE (#2968).
isFunction: function( obj ) { isFunction: function( obj ) {
return jQuery.type(obj) === "function"; return jQuery.type( obj ) === "function";
}, },
isArray: Array.isArray || function( obj ) { isArray: Array.isArray || function( obj ) {
return jQuery.type(obj) === "array"; return jQuery.type( obj ) === "array";
}, },
isWindow: function( obj ) { isWindow: function( obj ) {
@ -211,11 +216,12 @@ jQuery.extend({
}, },
isNumeric: function( obj ) { isNumeric: function( obj ) {
// parseFloat NaNs numeric-cast false positives (null|true|false|"") // parseFloat NaNs numeric-cast false positives (null|true|false|"")
// ...but misinterprets leading-number strings, particularly hex literals ("0x...") // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
// subtraction forces infinities to NaN // subtraction forces infinities to NaN
// adding 1 corrects loss of precision from parseFloat (#15100) // adding 1 corrects loss of precision from parseFloat (#15100)
return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; return !jQuery.isArray( obj ) && ( obj - parseFloat( obj ) + 1 ) >= 0;
}, },
isEmptyObject: function( obj ) { isEmptyObject: function( obj ) {
@ -232,18 +238,20 @@ jQuery.extend({
// Must be an Object. // Must be an Object.
// Because of IE, we also have to check the presence of the constructor property. // Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well // Make sure that DOM nodes and window objects don't pass through, as well
if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
return false; return false;
} }
try { try {
// Not own constructor property must be Object // Not own constructor property must be Object
if ( obj.constructor && if ( obj.constructor &&
!hasOwn.call(obj, "constructor") && !hasOwn.call( obj, "constructor" ) &&
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
return false; return false;
} }
} catch ( e ) { } catch ( e ) {
// IE8,9 Will throw exceptions on certain host objects #9897 // IE8,9 Will throw exceptions on certain host objects #9897
return false; return false;
} }
@ -268,12 +276,13 @@ jQuery.extend({
return obj + ""; return obj + "";
} }
return typeof obj === "object" || typeof obj === "function" ? return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call(obj) ] || "object" : class2type[ toString.call( obj ) ] || "object" :
typeof obj; typeof obj;
}, },
// Evaluates a script in a global context // Evaluates a script in a global context
globalEval: function( data ) { globalEval: function( data ) {
// Inspired by code by Andrea Giammarchi // Inspired by code by Andrea Giammarchi
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
var head = document.head || jQuery( "head" )[ 0 ] || document.documentElement, var head = document.head || jQuery( "head" )[ 0 ] || document.documentElement,
@ -353,6 +362,7 @@ jQuery.extend({
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) { for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays // Skip accessing in sparse arrays
if ( i in arr && arr[ i ] === elem ) { if ( i in arr && arr[ i ] === elem ) {
return i; return i;
@ -375,7 +385,7 @@ jQuery.extend({
// Support: IE<9 // Support: IE<9
// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
if ( len !== len ) { if ( len !== len ) {
while ( second[j] !== undefined ) { while ( second[ j ] !== undefined ) {
first[ i++ ] = second[ j++ ]; first[ i++ ] = second[ j++ ];
} }
} }
@ -475,7 +485,7 @@ jQuery.extend({
// jQuery.support is not used in Core but other projects attach their // jQuery.support is not used in Core but other projects attach their
// properties to it so it needs to exist. // properties to it so it needs to exist.
support: support support: support
}); } );
// JSHint would error on this code due to the Symbol not being defined in ES5. // JSHint would error on this code due to the Symbol not being defined in ES5.
// Defining this global in .jshintrc would create a danger of using the global // Defining this global in .jshintrc would create a danger of using the global
@ -488,10 +498,10 @@ if ( typeof Symbol === "function" ) {
/* jshint ignore: end */ /* jshint ignore: end */
// Populate the class2type map // Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), jQuery.each( "Boolean Number String Function Array Date RegExp Object Error".split( " " ),
function(i, name) { function( i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase(); class2type[ "[object " + name + "]" ] = name.toLowerCase();
}); } );
function isArrayLike( obj ) { function isArrayLike( obj ) {
@ -511,4 +521,4 @@ function isArrayLike( obj ) {
} }
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -13,7 +13,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
if ( jQuery.type( key ) === "object" ) { if ( jQuery.type( key ) === "object" ) {
chainable = true; chainable = true;
for ( i in key ) { for ( i in key ) {
access( elems, fn, i, key[i], true, emptyGet, raw ); access( elems, fn, i, key[ i ], true, emptyGet, raw );
} }
// Sets one value // Sets one value
@ -25,6 +25,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
} }
if ( bulk ) { if ( bulk ) {
// Bulk operations run against the entire set // Bulk operations run against the entire set
if ( raw ) { if ( raw ) {
fn.call( elems, value ); fn.call( elems, value );
@ -41,7 +42,11 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
if ( fn ) { if ( fn ) {
for ( ; i < length; i++ ) { for ( ; i < length; i++ ) {
fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); fn(
elems[ i ],
key,
raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )
);
} }
} }
} }
@ -52,9 +57,9 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
// Gets // Gets
bulk ? bulk ?
fn.call( elems ) : fn.call( elems ) :
length ? fn( elems[0], key ) : emptyGet; length ? fn( elems[ 0 ], key ) : emptyGet;
}; };
return access; return access;
}); } );

View File

@ -1,5 +1,5 @@
// Initialize a jQuery object // Initialize a jQuery object
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"./var/rsingleTag", "./var/rsingleTag",
@ -41,23 +41,24 @@ var rootjQuery,
} }
// Match html or make sure no context is specified for #id // Match html or make sure no context is specified for #id
if ( match && (match[1] || !context) ) { if ( match && ( match[ 1 ] || !context ) ) {
// HANDLE: $(html) -> $(array) // HANDLE: $(html) -> $(array)
if ( match[1] ) { if ( match[ 1 ] ) {
context = context instanceof jQuery ? context[0] : context; context = context instanceof jQuery ? context[ 0 ] : context;
// scripts is true for back-compat // scripts is true for back-compat
// Intentionally let the error be thrown if parseHTML is not present // Intentionally let the error be thrown if parseHTML is not present
jQuery.merge( this, jQuery.parseHTML( jQuery.merge( this, jQuery.parseHTML(
match[1], match[ 1 ],
context && context.nodeType ? context.ownerDocument || context : document, context && context.nodeType ? context.ownerDocument || context : document,
true true
) ); ) );
// HANDLE: $(html, props) // HANDLE: $(html, props)
if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
for ( match in context ) { for ( match in context ) {
// Properties of context are called as methods if possible // Properties of context are called as methods if possible
if ( jQuery.isFunction( this[ match ] ) ) { if ( jQuery.isFunction( this[ match ] ) ) {
this[ match ]( context[ match ] ); this[ match ]( context[ match ] );
@ -73,11 +74,12 @@ var rootjQuery,
// HANDLE: $(#id) // HANDLE: $(#id)
} else { } else {
elem = document.getElementById( match[2] ); elem = document.getElementById( match[ 2 ] );
if ( elem ) { if ( elem ) {
// Inject the element directly into the jQuery object // Inject the element directly into the jQuery object
this[0] = elem; this[ 0 ] = elem;
this.length = 1; this.length = 1;
} }
return this; return this;
@ -95,7 +97,7 @@ var rootjQuery,
// HANDLE: $(DOMElement) // HANDLE: $(DOMElement)
} else if ( selector.nodeType ) { } else if ( selector.nodeType ) {
this[0] = selector; this[ 0 ] = selector;
this.length = 1; this.length = 1;
return this; return this;
@ -104,6 +106,7 @@ var rootjQuery,
} else if ( jQuery.isFunction( selector ) ) { } else if ( jQuery.isFunction( selector ) ) {
return typeof root.ready !== "undefined" ? return typeof root.ready !== "undefined" ?
root.ready( selector ) : root.ready( selector ) :
// Execute immediately if ready is not present // Execute immediately if ready is not present
selector( jQuery ); selector( jQuery );
} }
@ -119,4 +122,4 @@ rootjQuery = jQuery( document );
return init; return init;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"./var/rsingleTag", "./var/rsingleTag",
@ -20,6 +20,7 @@ jQuery.parseHTML = function( data, context, keepScripts ) {
keepScripts = context; keepScripts = context;
context = false; context = false;
} }
// document.implementation stops scripts or inline event handlers from // document.implementation stops scripts or inline event handlers from
// being executed immediately // being executed immediately
context = context || ( support.createHTMLDocument ? context = context || ( support.createHTMLDocument ?
@ -31,7 +32,7 @@ jQuery.parseHTML = function( data, context, keepScripts ) {
// Single tag // Single tag
if ( parsed ) { if ( parsed ) {
return [ context.createElement( parsed[1] ) ]; return [ context.createElement( parsed[ 1 ] ) ];
} }
parsed = buildFragment( [ data ], context, scripts ); parsed = buildFragment( [ data ], context, scripts );
@ -45,4 +46,4 @@ jQuery.parseHTML = function( data, context, keepScripts ) {
return jQuery.parseHTML; return jQuery.parseHTML;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"../deferred" "../deferred"
@ -8,13 +8,15 @@ define([
var readyList; var readyList;
jQuery.fn.ready = function( fn ) { jQuery.fn.ready = function( fn ) {
// Add the callback // Add the callback
jQuery.ready.promise().done( fn ); jQuery.ready.promise().done( fn );
return this; return this;
}; };
jQuery.extend({ jQuery.extend( {
// Is the DOM ready to be used? Set to true once it occurs. // Is the DOM ready to be used? Set to true once it occurs.
isReady: false, isReady: false,
@ -50,7 +52,7 @@ jQuery.extend({
// If there are functions bound, to execute // If there are functions bound, to execute
readyList.resolveWith( document, [ jQuery ] ); readyList.resolveWith( document, [ jQuery ] );
} }
}); } );
/** /**
* Clean-up method for dom ready events * Clean-up method for dom ready events
@ -71,6 +73,7 @@ function detach() {
* The ready event handler and self cleanup method * The ready event handler and self cleanup method
*/ */
function completed() { function completed() {
// readyState === "complete" is good enough for us to call the dom ready in oldIE // readyState === "complete" is good enough for us to call the dom ready in oldIE
if ( document.addEventListener || if ( document.addEventListener ||
window.event.type === "load" || window.event.type === "load" ||
@ -93,11 +96,13 @@ jQuery.ready.promise = function( obj ) {
// discovered by ChrisS here: // discovered by ChrisS here:
// http://bugs.jquery.com/ticket/12282#comment:15 // http://bugs.jquery.com/ticket/12282#comment:15
if ( document.readyState === "complete" ) { if ( document.readyState === "complete" ) {
// Handle it asynchronously to allow scripts the opportunity to delay ready // Handle it asynchronously to allow scripts the opportunity to delay ready
window.setTimeout( jQuery.ready ); window.setTimeout( jQuery.ready );
// Standards-based browsers support DOMContentLoaded // Standards-based browsers support DOMContentLoaded
} else if ( document.addEventListener ) { } else if ( document.addEventListener ) {
// Use the handy event callback // Use the handy event callback
document.addEventListener( "DOMContentLoaded", completed ); document.addEventListener( "DOMContentLoaded", completed );
@ -107,6 +112,7 @@ jQuery.ready.promise = function( obj ) {
// Support: IE<9 // Support: IE<9
// If IE event model is used // If IE event model is used
} else { } else {
// Ensure firing before onload, maybe late but safe also for iframes // Ensure firing before onload, maybe late but safe also for iframes
document.attachEvent( "onreadystatechange", completed ); document.attachEvent( "onreadystatechange", completed );
@ -120,4 +126,4 @@ jQuery.ready.promise = function( obj ) {
// Kick off the DOM ready check even if the user does not // Kick off the DOM ready check even if the user does not
jQuery.ready.promise(); jQuery.ready.promise();
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../var/document", "../var/document",
"../var/support" "../var/support"
], function( document, support ) { ], function( document, support ) {
@ -8,14 +8,14 @@ define([
// collapse sibling forms: the second one becomes a child of the first one. // collapse sibling forms: the second one becomes a child of the first one.
// Because of that, this security measure has to be disabled in Safari 8. // Because of that, this security measure has to be disabled in Safari 8.
// https://bugs.webkit.org/show_bug.cgi?id=137337 // https://bugs.webkit.org/show_bug.cgi?id=137337
support.createHTMLDocument = (function() { support.createHTMLDocument = ( function() {
if ( !document.implementation.createHTMLDocument ) { if ( !document.implementation.createHTMLDocument ) {
return false; return false;
} }
var doc = document.implementation.createHTMLDocument( "" ); var doc = document.implementation.createHTMLDocument( "" );
doc.body.innerHTML = "<form></form><form></form>"; doc.body.innerHTML = "<form></form><form></form>";
return doc.body.childNodes.length === 2; return doc.body.childNodes.length === 2;
})(); } )();
return support; return support;
}); } );

View File

@ -1,4 +1,5 @@
define(function() { define( function() {
// Match a standalone tag // Match a standalone tag
return (/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/); return ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/pnum", "./var/pnum",
"./core/access", "./core/access",
@ -22,6 +22,7 @@ define([
isHidden, swap, curCSS, adjustCSS, addGetHookIf, support, showHide ) { isHidden, swap, curCSS, adjustCSS, addGetHookIf, support, showHide ) {
var var
// BuildExclude // BuildExclude
getStyles = curCSS.getStyles, getStyles = curCSS.getStyles,
ralpha = /alpha\([^)]*\)/i, ralpha = /alpha\([^)]*\)/i,
@ -69,6 +70,7 @@ function vendorPropName( name ) {
function setPositiveNumber( elem, value, subtract ) { function setPositiveNumber( elem, value, subtract ) {
var matches = rnumsplit.exec( value ); var matches = rnumsplit.exec( value );
return matches ? return matches ?
// Guard against undefined "subtract", e.g., when used as in cssHooks // Guard against undefined "subtract", e.g., when used as in cssHooks
Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
value; value;
@ -76,20 +78,24 @@ function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
var i = extra === ( isBorderBox ? "border" : "content" ) ? var i = extra === ( isBorderBox ? "border" : "content" ) ?
// If we already have the right measurement, avoid augmentation // If we already have the right measurement, avoid augmentation
4 : 4 :
// Otherwise initialize for horizontal or vertical properties // Otherwise initialize for horizontal or vertical properties
name === "width" ? 1 : 0, name === "width" ? 1 : 0,
val = 0; val = 0;
for ( ; i < 4; i += 2 ) { for ( ; i < 4; i += 2 ) {
// both box models exclude margin, so add it if we want it // both box models exclude margin, so add it if we want it
if ( extra === "margin" ) { if ( extra === "margin" ) {
val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
} }
if ( isBorderBox ) { if ( isBorderBox ) {
// border-box includes padding, so remove it if we want content // border-box includes padding, so remove it if we want content
if ( extra === "content" ) { if ( extra === "content" ) {
val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
@ -100,6 +106,7 @@ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
} }
} else { } else {
// at this point, extra isn't content, so add padding // at this point, extra isn't content, so add padding
val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
@ -122,6 +129,7 @@ function getWidthOrHeight( elem, name, extra ) {
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
if ( support.gBCRDimensions() ) { if ( support.gBCRDimensions() ) {
// Support: IE <= 11 only // Support: IE <= 11 only
// Running getBoundingClientRect on a disconnected node // Running getBoundingClientRect on a disconnected node
// in IE throws an error. // in IE throws an error.
@ -129,6 +137,7 @@ function getWidthOrHeight( elem, name, extra ) {
val = elem.getBoundingClientRect()[ name ]; val = elem.getBoundingClientRect()[ name ];
} }
} else { } else {
// In IE8 gBCR doesn't report width & height; we need to fall back to offset*. // In IE8 gBCR doesn't report width & height; we need to fall back to offset*.
val = name === "width" ? elem.offsetWidth : elem.offsetHeight; val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
} }
@ -144,6 +153,7 @@ function getWidthOrHeight( elem, name, extra ) {
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
if ( val <= 0 || val == null ) { if ( val <= 0 || val == null ) {
// Fall back to computed then uncomputed css if necessary // Fall back to computed then uncomputed css if necessary
val = curCSS( elem, name, styles ); val = curCSS( elem, name, styles );
if ( val < 0 || val == null ) { if ( val < 0 || val == null ) {
@ -151,7 +161,7 @@ function getWidthOrHeight( elem, name, extra ) {
} }
// Computed unit is not pixels. Stop here and return. // Computed unit is not pixels. Stop here and return.
if ( rnumnonpx.test(val) ) { if ( rnumnonpx.test( val ) ) {
return val; return val;
} }
@ -176,13 +186,15 @@ function getWidthOrHeight( elem, name, extra ) {
) + "px"; ) + "px";
} }
jQuery.extend({ jQuery.extend( {
// Add in style property hooks for overriding the default // Add in style property hooks for overriding the default
// behavior of getting and setting a style property // behavior of getting and setting a style property
cssHooks: { cssHooks: {
opacity: { opacity: {
get: function( elem, computed ) { get: function( elem, computed ) {
if ( computed ) { if ( computed ) {
// We should always get a number back from opacity // We should always get a number back from opacity
var ret = curCSS( elem, "opacity" ); var ret = curCSS( elem, "opacity" );
return ret === "" ? "1" : ret; return ret === "" ? "1" : ret;
@ -210,12 +222,14 @@ jQuery.extend({
// Add in properties whose names you wish to fix before // Add in properties whose names you wish to fix before
// setting or getting the value // setting or getting the value
cssProps: { cssProps: {
// normalize float css property // normalize float css property
"float": support.cssFloat ? "cssFloat" : "styleFloat" "float": support.cssFloat ? "cssFloat" : "styleFloat"
}, },
// Get and set the style property on a DOM Node // Get and set the style property on a DOM Node
style: function( elem, name, value, extra ) { style: function( elem, name, value, extra ) {
// Don't set styles on text and comment nodes // Don't set styles on text and comment nodes
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
return; return;
@ -238,8 +252,9 @@ jQuery.extend({
type = typeof value; type = typeof value;
// Convert "+=" or "-=" to relative numbers (#7345) // Convert "+=" or "-=" to relative numbers (#7345)
if ( type === "string" && (ret = rcssNum.exec( value )) && ret[ 1 ] ) { if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
value = adjustCSS( elem, name, ret ); value = adjustCSS( elem, name, ret );
// Fixes bug #9237 // Fixes bug #9237
type = "number"; type = "number";
} }
@ -257,25 +272,26 @@ jQuery.extend({
// Fixes #8908, it can be done more correctly by specifing setters in cssHooks, // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
// but it would mean to define eight // but it would mean to define eight
// (for every problematic property) identical functions // (for every problematic property) identical functions
if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
style[ name ] = "inherit"; style[ name ] = "inherit";
} }
// If a hook was provided, use that value, otherwise just set the specified value // If a hook was provided, use that value, otherwise just set the specified value
if ( !hooks || !("set" in hooks) || if ( !hooks || !( "set" in hooks ) ||
(value = hooks.set( elem, value, extra )) !== undefined ) { ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
// Support: IE<9 // Support: IE<9
// Swallow errors from 'invalid' CSS values (#5509) // Swallow errors from 'invalid' CSS values (#5509)
try { try {
style[ name ] = value; style[ name ] = value;
} catch (e) {} } catch ( e ) {}
} }
} else { } else {
// If a hook was provided get the non-computed value from there // If a hook was provided get the non-computed value from there
if ( hooks && "get" in hooks && if ( hooks && "get" in hooks &&
(ret = hooks.get( elem, false, extra )) !== undefined ) { ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
return ret; return ret;
} }
@ -319,15 +335,17 @@ jQuery.extend({
} }
return val; return val;
} }
}); } );
jQuery.each([ "height", "width" ], function( i, name ) { jQuery.each( [ "height", "width" ], function( i, name ) {
jQuery.cssHooks[ name ] = { jQuery.cssHooks[ name ] = {
get: function( elem, computed, extra ) { get: function( elem, computed, extra ) {
if ( computed ) { if ( computed ) {
// certain elements can have dimension info if we invisibly show them // certain elements can have dimension info if we invisibly show them
// however, it must have a current display style that would benefit from this // however, it must have a current display style that would benefit from this
return rdisplayswap.test( jQuery.css( elem, "display" ) ) && return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
// Support: Safari 8+ // Support: Safari 8+
// Table columns in Safari have non-zero offsetWidth & zero // Table columns in Safari have non-zero offsetWidth & zero
// getBoundingClientRect().width unless display is changed. // getBoundingClientRect().width unless display is changed.
@ -337,7 +355,7 @@ jQuery.each([ "height", "width" ], function( i, name ) {
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
swap( elem, cssShow, function() { swap( elem, cssShow, function() {
return getWidthOrHeight( elem, name, extra ); return getWidthOrHeight( elem, name, extra );
}) : } ) :
getWidthOrHeight( elem, name, extra ); getWidthOrHeight( elem, name, extra );
} }
}, },
@ -355,15 +373,16 @@ jQuery.each([ "height", "width" ], function( i, name ) {
); );
} }
}; };
}); } );
if ( !support.opacity ) { if ( !support.opacity ) {
jQuery.cssHooks.opacity = { jQuery.cssHooks.opacity = {
get: function( elem, computed ) { get: function( elem, computed ) {
// IE uses filters for opacity // IE uses filters for opacity
return ropacity.test( (computed && elem.currentStyle ? return ropacity.test( ( computed && elem.currentStyle ?
elem.currentStyle.filter : elem.currentStyle.filter :
elem.style.filter) || "" ) ? elem.style.filter ) || "" ) ?
( 0.01 * parseFloat( RegExp.$1 ) ) + "" : ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
computed ? "1" : ""; computed ? "1" : "";
}, },
@ -416,7 +435,7 @@ jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
); );
// These hooks are used by animate to expand properties // These hooks are used by animate to expand properties
jQuery.each({ jQuery.each( {
margin: "", margin: "",
padding: "", padding: "",
border: "Width" border: "Width"
@ -427,7 +446,7 @@ jQuery.each({
expanded = {}, expanded = {},
// assumes a single number if not a string // assumes a single number if not a string
parts = typeof value === "string" ? value.split(" ") : [ value ]; parts = typeof value === "string" ? value.split( " " ) : [ value ];
for ( ; i < 4; i++ ) { for ( ; i < 4; i++ ) {
expanded[ prefix + cssExpand[ i ] + suffix ] = expanded[ prefix + cssExpand[ i ] + suffix ] =
@ -441,9 +460,9 @@ jQuery.each({
if ( !rmargin.test( prefix ) ) { if ( !rmargin.test( prefix ) ) {
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
} }
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
css: function( name, value ) { css: function( name, value ) {
return access( this, function( elem, name, value ) { return access( this, function( elem, name, value ) {
var styles, len, var styles, len,
@ -477,15 +496,15 @@ jQuery.fn.extend({
return state ? this.show() : this.hide(); return state ? this.show() : this.hide();
} }
return this.each(function() { return this.each( function() {
if ( isHidden( this ) ) { if ( isHidden( this ) ) {
jQuery( this ).show(); jQuery( this ).show();
} else { } else {
jQuery( this ).hide(); jQuery( this ).hide();
} }
}); } );
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,10 +1,12 @@
define(function() { define( function() {
function addGetHookIf( conditionFn, hookFn ) { function addGetHookIf( conditionFn, hookFn ) {
// Define the hook, we'll check on the first run if it's really needed. // Define the hook, we'll check on the first run if it's really needed.
return { return {
get: function() { get: function() {
if ( conditionFn() ) { if ( conditionFn() ) {
// Hook not needed (or it's not possible to use it due // Hook not needed (or it's not possible to use it due
// to missing dependency), remove it. // to missing dependency), remove it.
delete this.get; delete this.get;
@ -12,11 +14,11 @@ function addGetHookIf( conditionFn, hookFn ) {
} }
// Hook needed; redefine it so that the support test is not executed again. // Hook needed; redefine it so that the support test is not executed again.
return (this.get = hookFn).apply( this, arguments ); return ( this.get = hookFn ).apply( this, arguments );
} }
}; };
} }
return addGetHookIf; return addGetHookIf;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/rcssNum" "../var/rcssNum"
], function( jQuery, rcssNum ) { ], function( jQuery, rcssNum ) {
@ -12,11 +12,13 @@ function adjustCSS( elem, prop, valueParts, tween ) {
function() { return jQuery.css( elem, prop, "" ); }, function() { return jQuery.css( elem, prop, "" ); },
initial = currentValue(), initial = currentValue(),
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
// Starting value computation is required for potential unit mismatches // Starting value computation is required for potential unit mismatches
initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
rcssNum.exec( jQuery.css( elem, prop ) ); rcssNum.exec( jQuery.css( elem, prop ) );
if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
// Trust units reported by jQuery.css // Trust units reported by jQuery.css
unit = unit || initialInUnit[ 3 ]; unit = unit || initialInUnit[ 3 ];
@ -27,6 +29,7 @@ function adjustCSS( elem, prop, valueParts, tween ) {
initialInUnit = +initial || 1; initialInUnit = +initial || 1;
do { do {
// If previous iteration zeroed out, double until we get *something*. // If previous iteration zeroed out, double until we get *something*.
// Use string for doubling so we don't accidentally see scale as unchanged below // Use string for doubling so we don't accidentally see scale as unchanged below
scale = scale || ".5"; scale = scale || ".5";
@ -38,12 +41,13 @@ function adjustCSS( elem, prop, valueParts, tween ) {
// Update scale, tolerating zero or NaN from tween.cur() // Update scale, tolerating zero or NaN from tween.cur()
// Break the loop if scale is unchanged or perfect, or if we've just had enough. // Break the loop if scale is unchanged or perfect, or if we've just had enough.
} while ( } while (
scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
); );
} }
if ( valueParts ) { if ( valueParts ) {
initialInUnit = +initialInUnit || +initial || 0; initialInUnit = +initialInUnit || +initial || 0;
// Apply relative offset (+=/-=) if specified // Apply relative offset (+=/-=) if specified
adjusted = valueParts[ 1 ] ? adjusted = valueParts[ 1 ] ?
initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
@ -58,4 +62,4 @@ function adjustCSS( elem, prop, valueParts, tween ) {
} }
return adjustCSS; return adjustCSS;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"exports", "exports",
"../core", "../core",
"../var/documentElement", "../var/documentElement",
@ -13,6 +13,7 @@ var getStyles, curCSS,
if ( window.getComputedStyle ) { if ( window.getComputedStyle ) {
getStyles = function( elem ) { getStyles = function( elem ) {
// Support: IE<=11+, Firefox<=30+ (#15098, #14150) // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
// IE throws on elements created in popups // IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle" // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
@ -120,4 +121,4 @@ if ( window.getComputedStyle ) {
exports.getStyles = getStyles; exports.getStyles = getStyles;
exports.curCSS = curCSS; exports.curCSS = curCSS;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"./support", "./support",
"../selector", "../selector",
@ -15,4 +15,4 @@ jQuery.expr.filters.visible = function( elem ) {
( ( elem.style && elem.style.display ) || jQuery.css( elem, "display" ) ) !== "none" ); ( ( elem.style && elem.style.display ) || jQuery.css( elem, "display" ) ) !== "none" );
}; };
}); } );

View File

@ -1,4 +1,4 @@
define([], function() { define( [], function() {
function showHide( elements, show ) { function showHide( elements, show ) {
var display, elem, var display, elem,
@ -16,6 +16,7 @@ function showHide( elements, show ) {
display = elem.style.display; display = elem.style.display;
if ( show ) { if ( show ) {
if ( display === "none" ) { if ( display === "none" ) {
// Restore a pre-hide() value if we have one // Restore a pre-hide() value if we have one
values[ index ] = jQuery._data( elem, "display" ) || ""; values[ index ] = jQuery._data( elem, "display" ) || "";
} }
@ -42,4 +43,4 @@ function showHide( elements, show ) {
return showHide; return showHide;
}); } );

View File

@ -1,11 +1,11 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"../var/documentElement", "../var/documentElement",
"../var/support" "../var/support"
], function( jQuery, document, documentElement, support ) { ], function( jQuery, document, documentElement, support ) {
(function() { ( function() {
var pixelPositionVal, boxSizingReliableVal, gBCRDimensionsVal, var pixelPositionVal, boxSizingReliableVal, gBCRDimensionsVal,
pixelMarginRightVal, reliableHiddenOffsetsVal, reliableMarginRightVal, pixelMarginRightVal, reliableHiddenOffsetsVal, reliableMarginRightVal,
container = document.createElement( "div" ), container = document.createElement( "div" ),
@ -36,7 +36,7 @@ define([
div.innerHTML = ""; div.innerHTML = "";
container.appendChild( div ); container.appendChild( div );
jQuery.extend(support, { jQuery.extend( support, {
reliableHiddenOffsets: function() { reliableHiddenOffsets: function() {
if ( pixelPositionVal == null ) { if ( pixelPositionVal == null ) {
computeStyleTests(); computeStyleTests();
@ -45,6 +45,7 @@ define([
}, },
boxSizingReliable: function() { boxSizingReliable: function() {
// We're checking for pixelPositionVal here instead of boxSizingReliableVal // We're checking for pixelPositionVal here instead of boxSizingReliableVal
// since that compresses better and they're computed together anyway. // since that compresses better and they're computed together anyway.
if ( pixelPositionVal == null ) { if ( pixelPositionVal == null ) {
@ -61,6 +62,7 @@ define([
}, },
pixelMarginRight: function() { pixelMarginRight: function() {
// Support: Android 4.0-4.3 // Support: Android 4.0-4.3
if ( pixelPositionVal == null ) { if ( pixelPositionVal == null ) {
computeStyleTests(); computeStyleTests();
@ -76,13 +78,14 @@ define([
}, },
reliableMarginRight: function() { reliableMarginRight: function() {
// Support: Android 2.3 // Support: Android 2.3
if ( pixelPositionVal == null ) { if ( pixelPositionVal == null ) {
computeStyleTests(); computeStyleTests();
} }
return reliableMarginRightVal; return reliableMarginRightVal;
} }
}); } );
function computeStyleTests() { function computeStyleTests() {
var contents, divStyle, var contents, divStyle,
@ -92,6 +95,7 @@ define([
documentElement.appendChild( container ); documentElement.appendChild( container );
div.style.cssText = div.style.cssText =
// Support: Android 2.3 // Support: Android 2.3
// Vendor-prefix box-sizing // Vendor-prefix box-sizing
"-webkit-box-sizing:border-box;box-sizing:border-box;" + "-webkit-box-sizing:border-box;box-sizing:border-box;" +
@ -124,6 +128,7 @@ define([
// Reset CSS: box-sizing; display; margin; border; padding // Reset CSS: box-sizing; display; margin; border; padding
contents.style.cssText = div.style.cssText = contents.style.cssText = div.style.cssText =
// Support: Android 2.3 // Support: Android 2.3
// Vendor-prefix box-sizing // Vendor-prefix box-sizing
"-webkit-box-sizing:content-box;box-sizing:content-box;" + "-webkit-box-sizing:content-box;box-sizing:content-box;" +
@ -158,8 +163,8 @@ define([
documentElement.removeChild( container ); documentElement.removeChild( container );
} }
})(); } )();
return support; return support;
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return [ "Top", "Right", "Bottom", "Left" ]; return [ "Top", "Right", "Bottom", "Left" ];
}); } );

View File

@ -1,14 +1,16 @@
define([ define( [
"../../core", "../../core",
"../../selector" "../../selector"
// css is assumed // css is assumed
], function( jQuery ) { ], function( jQuery ) {
return function( elem, el ) { return function( elem, el ) {
// isHidden might be called from jQuery#filter function; // isHidden might be called from jQuery#filter function;
// in that case, element will be second argument // in that case, element will be second argument
elem = el || elem; elem = el || elem;
return jQuery.css( elem, "display" ) === "none" || return jQuery.css( elem, "display" ) === "none" ||
!jQuery.contains( elem.ownerDocument, elem ); !jQuery.contains( elem.ownerDocument, elem );
}; };
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return (/^margin/); return ( /^margin/ );
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"../../var/pnum" "../../var/pnum"
], function( pnum ) { ], function( pnum ) {
return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
}); } );

View File

@ -1,4 +1,4 @@
define(function() { define( function() {
// A method for quickly swapping in/out CSS properties to get correct calculations. // A method for quickly swapping in/out CSS properties to get correct calculations.
return function( elem, options, callback, args ) { return function( elem, options, callback, args ) {
@ -21,4 +21,4 @@ return function( elem, options, callback, args ) {
return ret; return ret;
}; };
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/deletedIds", "./var/deletedIds",
"./data/support", "./data/support",
@ -9,6 +9,7 @@ var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
rmultiDash = /([A-Z])/g; rmultiDash = /([A-Z])/g;
function dataAttr( elem, key, data ) { function dataAttr( elem, key, data ) {
// If nothing was found internally, try to fetch any // If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute // data from the HTML5 data-* attribute
if ( data === undefined && elem.nodeType === 1 ) { if ( data === undefined && elem.nodeType === 1 ) {
@ -22,6 +23,7 @@ function dataAttr( elem, key, data ) {
data = data === "true" ? true : data = data === "true" ? true :
data === "false" ? false : data === "false" ? false :
data === "null" ? null : data === "null" ? null :
// Only convert to a number if it doesn't change the string // Only convert to a number if it doesn't change the string
+data + "" === data ? +data : +data + "" === data ? +data :
rbrace.test( data ) ? jQuery.parseJSON( data ) : rbrace.test( data ) ? jQuery.parseJSON( data ) :
@ -78,12 +80,13 @@ function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
// Avoid doing any more work than we need to when trying to get data on an // Avoid doing any more work than we need to when trying to get data on an
// object that has no data at all // object that has no data at all
if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&
data === undefined && typeof key === "string" ) { data === undefined && typeof key === "string" ) {
return; return;
} }
if ( !id ) { if ( !id ) {
// Only DOM nodes need a new unique ID for each element since their data // Only DOM nodes need a new unique ID for each element since their data
// ends up in the global cache // ends up in the global cache
if ( isNode ) { if ( isNode ) {
@ -94,6 +97,7 @@ function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
} }
if ( !cache[ id ] ) { if ( !cache[ id ] ) {
// Avoid exposing jQuery metadata on plain JS objects when the object // Avoid exposing jQuery metadata on plain JS objects when the object
// is serialized using JSON.stringify // is serialized using JSON.stringify
cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
@ -118,6 +122,7 @@ function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
for ( prop in key ) { for ( prop in key ) {
thisCache[ jQuery.camelCase( prop ) ] = key[ prop ]; thisCache[ jQuery.camelCase( prop ) ] = key[ prop ];
} }
// Stop here, ignore other arguments // Stop here, ignore other arguments
return thisCache; return thisCache;
} }
@ -129,6 +134,7 @@ function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
// We always set camelCased properties (gh-2257) // We always set camelCased properties (gh-2257)
return typeof key === "string" ? return typeof key === "string" ?
thisCache[ jQuery.camelCase( key ) ] : thisCache[ jQuery.camelCase( key ) ] :
// Return the whole cache if no key was specified // Return the whole cache if no key was specified
thisCache; thisCache;
} }
@ -178,7 +184,7 @@ function internalRemoveData( elem, key, pvt ) {
// If there is no data left in the cache, we want to continue // If there is no data left in the cache, we want to continue
// and let the cache object itself get destroyed // and let the cache object itself get destroyed
if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {
return; return;
} }
} }
@ -211,7 +217,7 @@ function internalRemoveData( elem, key, pvt ) {
} }
} }
jQuery.extend({ jQuery.extend( {
cache: {}, cache: {},
// The following elements (space-suffixed to avoid Object.prototype collisions) // The following elements (space-suffixed to avoid Object.prototype collisions)
@ -219,12 +225,13 @@ jQuery.extend({
noData: { noData: {
"applet ": true, "applet ": true,
"embed ": true, "embed ": true,
// ...but Flash objects (which have this classid) *can* handle expandos // ...but Flash objects (which have this classid) *can* handle expandos
"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
}, },
hasData: function( elem ) { hasData: function( elem ) {
elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];
return !!elem && !isEmptyDataObject( elem ); return !!elem && !isEmptyDataObject( elem );
}, },
@ -244,12 +251,12 @@ jQuery.extend({
_removeData: function( elem, name ) { _removeData: function( elem, name ) {
return internalRemoveData( elem, name, true ); return internalRemoveData( elem, name, true );
} }
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
data: function( key, value ) { data: function( key, value ) {
var i, name, data, var i, name, data,
elem = this[0], elem = this[ 0 ],
attrs = elem && elem.attributes; attrs = elem && elem.attributes;
// Special expections of .data basically thwart jQuery.access, // Special expections of .data basically thwart jQuery.access,
@ -269,7 +276,7 @@ jQuery.fn.extend({
if ( attrs[ i ] ) { if ( attrs[ i ] ) {
name = attrs[ i ].name; name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) { if ( name.indexOf( "data-" ) === 0 ) {
name = jQuery.camelCase( name.slice(5) ); name = jQuery.camelCase( name.slice( 5 ) );
dataAttr( elem, name, data[ name ] ); dataAttr( elem, name, data[ name ] );
} }
} }
@ -283,16 +290,17 @@ jQuery.fn.extend({
// Sets multiple values // Sets multiple values
if ( typeof key === "object" ) { if ( typeof key === "object" ) {
return this.each(function() { return this.each( function() {
jQuery.data( this, key ); jQuery.data( this, key );
}); } );
} }
return arguments.length > 1 ? return arguments.length > 1 ?
// Sets one value // Sets one value
this.each(function() { this.each( function() {
jQuery.data( this, key, value ); jQuery.data( this, key, value );
}) : } ) :
// Gets one value // Gets one value
// Try to fetch any internally stored data first // Try to fetch any internally stored data first
@ -300,11 +308,11 @@ jQuery.fn.extend({
}, },
removeData: function( key ) { removeData: function( key ) {
return this.each(function() { return this.each( function() {
jQuery.removeData( this, key ); jQuery.removeData( this, key );
}); } );
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -6,7 +6,7 @@ define([
* Determines whether an object can have data * Determines whether an object can have data
*/ */
jQuery.acceptData = function( elem ) { jQuery.acceptData = function( elem ) {
var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ],
nodeType = +elem.nodeType || 1; nodeType = +elem.nodeType || 1;
// Do not set data on non-element DOM nodes because it will not be cleared (#8335). // Do not set data on non-element DOM nodes because it will not be cleared (#8335).
@ -14,8 +14,8 @@ jQuery.acceptData = function( elem ) {
false : false :
// Nodes accept data unless otherwise specified; rejection can be conditional // Nodes accept data unless otherwise specified; rejection can be conditional
!noData || noData !== true && elem.getAttribute("classid") === noData; !noData || noData !== true && elem.getAttribute( "classid" ) === noData;
}; };
return jQuery.acceptData; return jQuery.acceptData;
}); } );

View File

@ -1,9 +1,9 @@
define([ define( [
"../var/document", "../var/document",
"../var/support" "../var/support"
], function( document, support ) { ], function( document, support ) {
(function() { ( function() {
var div = document.createElement( "div" ); var div = document.createElement( "div" );
// Support: IE<9 // Support: IE<9
@ -16,8 +16,8 @@ define([
// Null elements to avoid leaks in IE. // Null elements to avoid leaks in IE.
div = null; div = null;
})(); } )();
return support; return support;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/slice", "./var/slice",
"./callbacks" "./callbacks"
@ -11,18 +11,19 @@ function Thrower( ex ) {
throw ex; throw ex;
} }
jQuery.extend({ jQuery.extend( {
Deferred: function( func ) { Deferred: function( func ) {
var tuples = [ var tuples = [
// action, add listener, callbacks, // action, add listener, callbacks,
// ... .then handlers, argument index, [final state] // ... .then handlers, argument index, [final state]
[ "notify", "progress", jQuery.Callbacks("memory"), [ "notify", "progress", jQuery.Callbacks( "memory" ),
jQuery.Callbacks("memory"), 2 ], jQuery.Callbacks( "memory" ), 2 ],
[ "resolve", "done", jQuery.Callbacks("once memory"), [ "resolve", "done", jQuery.Callbacks( "once memory" ),
jQuery.Callbacks("once memory"), 0, "resolved" ], jQuery.Callbacks( "once memory" ), 0, "resolved" ],
[ "reject", "fail", jQuery.Callbacks("once memory"), [ "reject", "fail", jQuery.Callbacks( "once memory" ),
jQuery.Callbacks("once memory"), 1, "rejected" ] jQuery.Callbacks( "once memory" ), 1, "rejected" ]
], ],
state = "pending", state = "pending",
promise = { promise = {
@ -36,19 +37,21 @@ jQuery.extend({
"catch": function( fn ) { "catch": function( fn ) {
return promise.then( null, fn ); return promise.then( null, fn );
}, },
// Keep pipe for back-compat // Keep pipe for back-compat
pipe: function( /* fnDone, fnFail, fnProgress */ ) { pipe: function( /* fnDone, fnFail, fnProgress */ ) {
var fns = arguments; var fns = arguments;
return jQuery.Deferred(function( newDefer ) { return jQuery.Deferred( function( newDefer ) {
jQuery.each( tuples, function( i, tuple ) { jQuery.each( tuples, function( i, tuple ) {
// Map tuples (progress, done, fail) to arguments (done, fail, progress) // Map tuples (progress, done, fail) to arguments (done, fail, progress)
var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
// deferred.progress(function() { bind to newDefer or newDefer.notify }) // deferred.progress(function() { bind to newDefer or newDefer.notify })
// deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.done(function() { bind to newDefer or newDefer.resolve })
// deferred.fail(function() { bind to newDefer or newDefer.reject }) // deferred.fail(function() { bind to newDefer or newDefer.reject })
deferred[ tuple[1] ](function() { deferred[ tuple[ 1 ] ]( function() {
var returned = fn && fn.apply( this, arguments ); var returned = fn && fn.apply( this, arguments );
if ( returned && jQuery.isFunction( returned.promise ) ) { if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise() returned.promise()
@ -61,10 +64,10 @@ jQuery.extend({
fn ? [ returned ] : arguments fn ? [ returned ] : arguments
); );
} }
}); } );
}); } );
fns = null; fns = null;
}).promise(); } ).promise();
}, },
then: function( onFulfilled, onRejected, onProgress ) { then: function( onFulfilled, onRejected, onProgress ) {
var maxDepth = 0; var maxDepth = 0;
@ -105,6 +108,7 @@ jQuery.extend({
// Handle a returned thenable // Handle a returned thenable
if ( jQuery.isFunction( then ) ) { if ( jQuery.isFunction( then ) ) {
// Special processors (notify) just wait for resolution // Special processors (notify) just wait for resolution
if ( special ) { if ( special ) {
then.call( then.call(
@ -130,6 +134,7 @@ jQuery.extend({
// Handle all other returned values // Handle all other returned values
} else { } else {
// Only substitue handlers pass on context // Only substitue handlers pass on context
// and multiple values (non-spec behavior) // and multiple values (non-spec behavior)
if ( handler !== Identity ) { if ( handler !== Identity ) {
@ -156,6 +161,7 @@ jQuery.extend({
// https://promisesaplus.com/#point-61 // https://promisesaplus.com/#point-61
// Ignore post-resolution exceptions // Ignore post-resolution exceptions
if ( depth + 1 >= maxDepth ) { if ( depth + 1 >= maxDepth ) {
// Only substitue handlers pass on context // Only substitue handlers pass on context
// and multiple values (non-spec behavior) // and multiple values (non-spec behavior)
if ( handler !== Thrower ) { if ( handler !== Thrower ) {
@ -181,7 +187,8 @@ jQuery.extend({
}; };
} }
return jQuery.Deferred(function( newDefer ) { return jQuery.Deferred( function( newDefer ) {
// progress_handlers.add( ... ) // progress_handlers.add( ... )
tuples[ 0 ][ 3 ].add( tuples[ 0 ][ 3 ].add(
resolve( resolve(
@ -215,8 +222,9 @@ jQuery.extend({
Thrower Thrower
) )
); );
}).promise(); } ).promise();
}, },
// Get a promise for this deferred // Get a promise for this deferred
// If obj is provided, the promise aspect is added to the object // If obj is provided, the promise aspect is added to the object
promise: function( obj ) { promise: function( obj ) {
@ -233,12 +241,13 @@ jQuery.extend({
// promise.progress = list.add // promise.progress = list.add
// promise.done = list.add // promise.done = list.add
// promise.fail = list.add // promise.fail = list.add
promise[ tuple[1] ] = list.add; promise[ tuple[ 1 ] ] = list.add;
// Handle state // Handle state
if ( stateString ) { if ( stateString ) {
list.add( list.add(
function() { function() {
// state = "resolved" (i.e., fulfilled) // state = "resolved" (i.e., fulfilled)
// state = "rejected" // state = "rejected"
state = stateString; state = stateString;
@ -261,16 +270,16 @@ jQuery.extend({
// deferred.notify = function() { deferred.notifyWith(...) } // deferred.notify = function() { deferred.notifyWith(...) }
// deferred.resolve = function() { deferred.resolveWith(...) } // deferred.resolve = function() { deferred.resolveWith(...) }
// deferred.reject = function() { deferred.rejectWith(...) } // deferred.reject = function() { deferred.rejectWith(...) }
deferred[ tuple[0] ] = function() { deferred[ tuple[ 0 ] ] = function() {
deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
return this; return this;
}; };
// deferred.notifyWith = list.fireWith // deferred.notifyWith = list.fireWith
// deferred.resolveWith = list.fireWith // deferred.resolveWith = list.fireWith
// deferred.rejectWith = list.fireWith // deferred.rejectWith = list.fireWith
deferred[ tuple[0] + "With" ] = list.fireWith; deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
}); } );
// Make the deferred a promise // Make the deferred a promise
promise.promise( deferred ); promise.promise( deferred );
@ -320,14 +329,14 @@ jQuery.extend({
resolveContexts = new Array( length ); resolveContexts = new Array( length );
for ( ; i < length; i++ ) { for ( ; i < length; i++ ) {
if ( resolveValues[ i ] && if ( resolveValues[ i ] &&
jQuery.isFunction( (method = resolveValues[ i ].promise) ) ) { jQuery.isFunction( ( method = resolveValues[ i ].promise ) ) ) {
method.call( resolveValues[ i ] ) method.call( resolveValues[ i ] )
.progress( updateFunc( i, progressContexts, progressValues ) ) .progress( updateFunc( i, progressContexts, progressValues ) )
.done( updateFunc( i, resolveContexts, resolveValues ) ) .done( updateFunc( i, resolveContexts, resolveValues ) )
.fail( master.reject ); .fail( master.reject );
} else if ( resolveValues[ i ] && } else if ( resolveValues[ i ] &&
jQuery.isFunction( (method = resolveValues[ i ].then) ) ) { jQuery.isFunction( ( method = resolveValues[ i ].then ) ) ) {
method.call( method.call(
resolveValues[ i ], resolveValues[ i ],
@ -348,7 +357,7 @@ jQuery.extend({
return master.promise(); return master.promise();
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,2 +1,2 @@
define(function() { define( function() {
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./core/access", "./core/access",
"./css" "./css"
@ -8,6 +8,7 @@ define([
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
function( defaultExtra, funcName ) { function( defaultExtra, funcName ) {
// margin is only for outerHeight, outerWidth // margin is only for outerHeight, outerWidth
jQuery.fn[ funcName ] = function( margin, value ) { jQuery.fn[ funcName ] = function( margin, value ) {
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
@ -17,6 +18,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
var doc; var doc;
if ( jQuery.isWindow( elem ) ) { if ( jQuery.isWindow( elem ) ) {
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
// isn't a whole lot we can do. See pull request at this URL for discussion: // isn't a whole lot we can do. See pull request at this URL for discussion:
// https://github.com/jquery/jquery/pull/764 // https://github.com/jquery/jquery/pull/764
@ -39,6 +41,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
} }
return value === undefined ? return value === undefined ?
// Get width or height on the element, requesting but not forcing parseFloat // Get width or height on the element, requesting but not forcing parseFloat
jQuery.css( elem, type, extra ) : jQuery.css( elem, type, extra ) :
@ -46,8 +49,8 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
jQuery.style( elem, type, value, extra ); jQuery.style( elem, type, value, extra );
}, type, chainable ? margin : undefined, chainable, null ); }, type, chainable ? margin : undefined, chainable, null );
}; };
}); } );
}); } );
return jQuery; return jQuery;
}); } );

82
src/effects.js vendored
View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/rcssNum", "./var/rcssNum",
@ -33,9 +33,9 @@ function raf() {
// Animations created synchronously will run synchronously // Animations created synchronously will run synchronously
function createFxNow() { function createFxNow() {
window.setTimeout(function() { window.setTimeout( function() {
fxNow = undefined; fxNow = undefined;
}); } );
return ( fxNow = jQuery.now() ); return ( fxNow = jQuery.now() );
} }
@ -66,7 +66,7 @@ function createTween( value, prop, animation ) {
index = 0, index = 0,
length = collection.length; length = collection.length;
for ( ; index < length; index++ ) { for ( ; index < length; index++ ) {
if ( (tween = collection[ index ].call( animation, prop, value )) ) { if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
// we're done with this property // we're done with this property
return tween; return tween;
@ -98,16 +98,17 @@ function defaultPrefilter( elem, props, opts ) {
} }
hooks.unqueued++; hooks.unqueued++;
anim.always(function() { anim.always( function() {
// doing this makes sure that the complete handler will be called // doing this makes sure that the complete handler will be called
// before this completes // before this completes
anim.always(function() { anim.always( function() {
hooks.unqueued--; hooks.unqueued--;
if ( !jQuery.queue( elem, "fx" ).length ) { if ( !jQuery.queue( elem, "fx" ).length ) {
hooks.empty.fire(); hooks.empty.fire();
} }
}); } );
}); } );
} }
// Detect show/hide animations // Detect show/hide animations
@ -140,6 +141,7 @@ function defaultPrefilter( elem, props, opts ) {
// Restrict "overflow" and "display" styles during box animations // Restrict "overflow" and "display" styles during box animations
if ( isBox && elem.nodeType === 1 ) { if ( isBox && elem.nodeType === 1 ) {
// Support: IE 9 - 11 // Support: IE 9 - 11
// Record all 3 overflow attributes because IE does not infer the shorthand // Record all 3 overflow attributes because IE does not infer the shorthand
// from identically-valued overflowX and overflowY // from identically-valued overflowX and overflowY
@ -163,9 +165,9 @@ function defaultPrefilter( elem, props, opts ) {
// Restore the original display value at the end of pure show/hide animations // Restore the original display value at the end of pure show/hide animations
if ( !propTween ) { if ( !propTween ) {
anim.done(function() { anim.done( function() {
style.display = restoreDisplay; style.display = restoreDisplay;
}); } );
if ( restoreDisplay == null ) { if ( restoreDisplay == null ) {
display = style.display; display = style.display;
restoreDisplay = display === "none" ? "" : display; restoreDisplay = display === "none" ? "" : display;
@ -178,11 +180,11 @@ function defaultPrefilter( elem, props, opts ) {
if ( opts.overflow ) { if ( opts.overflow ) {
style.overflow = "hidden"; style.overflow = "hidden";
anim.always(function() { anim.always( function() {
style.overflow = opts.overflow[ 0 ]; style.overflow = opts.overflow[ 0 ];
style.overflowX = opts.overflow[ 1 ]; style.overflowX = opts.overflow[ 1 ];
style.overflowY = opts.overflow[ 2 ]; style.overflowY = opts.overflow[ 2 ];
}); } );
} }
// Implement show/hide animations // Implement show/hide animations
@ -210,7 +212,8 @@ function defaultPrefilter( elem, props, opts ) {
} }
/* jshint -W083 */ /* jshint -W083 */
anim.done(function() { anim.done( function() {
// The final step of a "hide" animation is actually hiding the element // The final step of a "hide" animation is actually hiding the element
if ( !hidden ) { if ( !hidden ) {
showHide( [ elem ] ); showHide( [ elem ] );
@ -219,7 +222,7 @@ function defaultPrefilter( elem, props, opts ) {
for ( prop in orig ) { for ( prop in orig ) {
jQuery.style( elem, prop, orig[ prop ] ); jQuery.style( elem, prop, orig[ prop ] );
} }
}); } );
} }
// Per-property setup // Per-property setup
@ -277,15 +280,17 @@ function Animation( elem, properties, options ) {
index = 0, index = 0,
length = Animation.prefilters.length, length = Animation.prefilters.length,
deferred = jQuery.Deferred().always( function() { deferred = jQuery.Deferred().always( function() {
// don't match elem in the :animated selector // don't match elem in the :animated selector
delete tick.elem; delete tick.elem;
}), } ),
tick = function() { tick = function() {
if ( stopped ) { if ( stopped ) {
return false; return false;
} }
var currentTime = fxNow || createFxNow(), var currentTime = fxNow || createFxNow(),
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
// Support: Android 2.3 // Support: Android 2.3
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
temp = remaining / animation.duration || 0, temp = remaining / animation.duration || 0,
@ -297,7 +302,7 @@ function Animation( elem, properties, options ) {
animation.tweens[ index ].run( percent ); animation.tweens[ index ].run( percent );
} }
deferred.notifyWith( elem, [ animation, percent, remaining ]); deferred.notifyWith( elem, [ animation, percent, remaining ] );
if ( percent < 1 && length ) { if ( percent < 1 && length ) {
return remaining; return remaining;
@ -306,7 +311,7 @@ function Animation( elem, properties, options ) {
return false; return false;
} }
}, },
animation = deferred.promise({ animation = deferred.promise( {
elem: elem, elem: elem,
props: jQuery.extend( {}, properties ), props: jQuery.extend( {}, properties ),
opts: jQuery.extend( true, { opts: jQuery.extend( true, {
@ -326,6 +331,7 @@ function Animation( elem, properties, options ) {
}, },
stop: function( gotoEnd ) { stop: function( gotoEnd ) {
var index = 0, var index = 0,
// if we are going to the end, we want to run all the tweens // if we are going to the end, we want to run all the tweens
// otherwise we skip this part // otherwise we skip this part
length = gotoEnd ? animation.tweens.length : 0; length = gotoEnd ? animation.tweens.length : 0;
@ -346,7 +352,7 @@ function Animation( elem, properties, options ) {
} }
return this; return this;
} }
}), } ),
props = animation.props; props = animation.props;
propFilter( props, animation.opts.specialEasing ); propFilter( props, animation.opts.specialEasing );
@ -373,7 +379,7 @@ function Animation( elem, properties, options ) {
elem: elem, elem: elem,
anim: animation, anim: animation,
queue: animation.opts.queue queue: animation.opts.queue
}) } )
); );
// attach callbacks from options // attach callbacks from options
@ -421,7 +427,7 @@ jQuery.Animation = jQuery.extend( Animation, {
Animation.prefilters.push( callback ); Animation.prefilters.push( callback );
} }
} }
}); } );
jQuery.speed = function( speed, easing, fn ) { jQuery.speed = function( speed, easing, fn ) {
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
@ -462,18 +468,20 @@ jQuery.speed = function( speed, easing, fn ) {
return opt; return opt;
}; };
jQuery.fn.extend({ jQuery.fn.extend( {
fadeTo: function( speed, to, easing, callback ) { fadeTo: function( speed, to, easing, callback ) {
// show any hidden elements after setting opacity to 0 // show any hidden elements after setting opacity to 0
return this.filter( isHidden ).css( "opacity", 0 ).show() return this.filter( isHidden ).css( "opacity", 0 ).show()
// animate to the value specified // animate to the value specified
.end().animate({ opacity: to }, speed, easing, callback ); .end().animate( { opacity: to }, speed, easing, callback );
}, },
animate: function( prop, speed, easing, callback ) { animate: function( prop, speed, easing, callback ) {
var empty = jQuery.isEmptyObject( prop ), var empty = jQuery.isEmptyObject( prop ),
optall = jQuery.speed( speed, easing, callback ), optall = jQuery.speed( speed, easing, callback ),
doAnimation = function() { doAnimation = function() {
// Operate on a copy of prop so per-property easing won't be lost // Operate on a copy of prop so per-property easing won't be lost
var anim = Animation( this, jQuery.extend( {}, prop ), optall ); var anim = Animation( this, jQuery.extend( {}, prop ), optall );
@ -504,7 +512,7 @@ jQuery.fn.extend({
this.queue( type || "fx", [] ); this.queue( type || "fx", [] );
} }
return this.each(function() { return this.each( function() {
var dequeue = true, var dequeue = true,
index = type != null && type + "queueHooks", index = type != null && type + "queueHooks",
timers = jQuery.timers, timers = jQuery.timers,
@ -524,7 +532,7 @@ jQuery.fn.extend({
for ( index = timers.length; index--; ) { for ( index = timers.length; index--; ) {
if ( timers[ index ].elem === this && if ( timers[ index ].elem === this &&
(type == null || timers[ index ].queue === type) ) { ( type == null || timers[ index ].queue === type ) ) {
timers[ index ].anim.stop( gotoEnd ); timers[ index ].anim.stop( gotoEnd );
dequeue = false; dequeue = false;
@ -538,13 +546,13 @@ jQuery.fn.extend({
if ( dequeue || !gotoEnd ) { if ( dequeue || !gotoEnd ) {
jQuery.dequeue( this, type ); jQuery.dequeue( this, type );
} }
}); } );
}, },
finish: function( type ) { finish: function( type ) {
if ( type !== false ) { if ( type !== false ) {
type = type || "fx"; type = type || "fx";
} }
return this.each(function() { return this.each( function() {
var index, var index,
data = jQuery._data( this ), data = jQuery._data( this ),
queue = data[ type + "queue" ], queue = data[ type + "queue" ],
@ -579,24 +587,24 @@ jQuery.fn.extend({
// turn off finishing flag // turn off finishing flag
delete data.finish; delete data.finish;
}); } );
} }
}); } );
jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
var cssFn = jQuery.fn[ name ]; var cssFn = jQuery.fn[ name ];
jQuery.fn[ name ] = function( speed, easing, callback ) { jQuery.fn[ name ] = function( speed, easing, callback ) {
return speed == null || typeof speed === "boolean" ? return speed == null || typeof speed === "boolean" ?
cssFn.apply( this, arguments ) : cssFn.apply( this, arguments ) :
this.animate( genFx( name, true ), speed, easing, callback ); this.animate( genFx( name, true ), speed, easing, callback );
}; };
}); } );
// Generate shortcuts for custom animations // Generate shortcuts for custom animations
jQuery.each({ jQuery.each( {
slideDown: genFx("show"), slideDown: genFx( "show" ),
slideUp: genFx("hide"), slideUp: genFx( "hide" ),
slideToggle: genFx("toggle"), slideToggle: genFx( "toggle" ),
fadeIn: { opacity: "show" }, fadeIn: { opacity: "show" },
fadeOut: { opacity: "hide" }, fadeOut: { opacity: "hide" },
fadeToggle: { opacity: "toggle" } fadeToggle: { opacity: "toggle" }
@ -604,7 +612,7 @@ jQuery.each({
jQuery.fn[ name ] = function( speed, easing, callback ) { jQuery.fn[ name ] = function( speed, easing, callback ) {
return this.animate( props, speed, easing, callback ); return this.animate( props, speed, easing, callback );
}; };
}); } );
jQuery.timers = []; jQuery.timers = [];
jQuery.fx.tick = function() { jQuery.fx.tick = function() {
@ -616,6 +624,7 @@ jQuery.fx.tick = function() {
for ( ; i < timers.length; i++ ) { for ( ; i < timers.length; i++ ) {
timer = timers[ i ]; timer = timers[ i ];
// Checks the timer has not already been removed // Checks the timer has not already been removed
if ( !timer() && timers[ i ] === timer ) { if ( !timer() && timers[ i ] === timer ) {
timers.splice( i--, 1 ); timers.splice( i--, 1 );
@ -658,9 +667,10 @@ jQuery.fx.stop = function() {
jQuery.fx.speeds = { jQuery.fx.speeds = {
slow: 600, slow: 600,
fast: 200, fast: 200,
// Default speed // Default speed
_default: 400 _default: 400
}; };
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../css" "../css"
], function( jQuery ) { ], function( jQuery ) {
@ -71,10 +71,12 @@ Tween.propHooks = {
// so, simple values such as "10px" are parsed to Float. // so, simple values such as "10px" are parsed to Float.
// complex values such as "rotate(1rad)" are returned as is. // complex values such as "rotate(1rad)" are returned as is.
result = jQuery.css( tween.elem, tween.prop, "" ); result = jQuery.css( tween.elem, tween.prop, "" );
// Empty strings, null, undefined and "auto" are converted to 0. // Empty strings, null, undefined and "auto" are converted to 0.
return !result || result === "auto" ? 0 : result; return !result || result === "auto" ? 0 : result;
}, },
set: function( tween ) { set: function( tween ) {
// use step hook for back compat - use cssHook if its there - use .style if its // use step hook for back compat - use cssHook if its there - use .style if its
// available and use plain properties where available // available and use plain properties where available
if ( jQuery.fx.step[ tween.prop ] ) { if ( jQuery.fx.step[ tween.prop ] ) {
@ -116,4 +118,4 @@ jQuery.fx = Tween.prototype.init;
// Back Compat <1.8 extension point // Back Compat <1.8 extension point
jQuery.fx.step = {}; jQuery.fx.step = {};
}); } );

View File

@ -1,13 +1,13 @@
define([ define( [
"../core", "../core",
"../selector", "../selector",
"../effects" "../effects"
], function( jQuery ) { ], function( jQuery ) {
jQuery.expr.filters.animated = function( elem ) { jQuery.expr.filters.animated = function( elem ) {
return jQuery.grep(jQuery.timers, function( fn ) { return jQuery.grep( jQuery.timers, function( fn ) {
return elem === fn.elem; return elem === fn.elem;
}).length; } ).length;
}; };
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/rnotwhite", "./var/rnotwhite",
@ -38,8 +38,10 @@ function on( elem, types, selector, data, fn, one ) {
// Types can be a map of types/handlers // Types can be a map of types/handlers
if ( typeof types === "object" ) { if ( typeof types === "object" ) {
// ( types-Object, selector, data ) // ( types-Object, selector, data )
if ( typeof selector !== "string" ) { if ( typeof selector !== "string" ) {
// ( types-Object, data ) // ( types-Object, data )
data = data || selector; data = data || selector;
selector = undefined; selector = undefined;
@ -51,15 +53,18 @@ function on( elem, types, selector, data, fn, one ) {
} }
if ( data == null && fn == null ) { if ( data == null && fn == null ) {
// ( types, fn ) // ( types, fn )
fn = selector; fn = selector;
data = selector = undefined; data = selector = undefined;
} else if ( fn == null ) { } else if ( fn == null ) {
if ( typeof selector === "string" ) { if ( typeof selector === "string" ) {
// ( types, selector, fn ) // ( types, selector, fn )
fn = data; fn = data;
data = undefined; data = undefined;
} else { } else {
// ( types, data, fn ) // ( types, data, fn )
fn = data; fn = data;
data = selector; data = selector;
@ -73,16 +78,18 @@ function on( elem, types, selector, data, fn, one ) {
if ( one === 1 ) { if ( one === 1 ) {
origFn = fn; origFn = fn;
fn = function( event ) { fn = function( event ) {
// Can use an empty set, since event contains the info // Can use an empty set, since event contains the info
jQuery().off( event ); jQuery().off( event );
return origFn.apply( this, arguments ); return origFn.apply( this, arguments );
}; };
// Use same guid so caller can remove using origFn // Use same guid so caller can remove using origFn
fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
} }
return elem.each( function() { return elem.each( function() {
jQuery.event.add( this, types, fn, data, selector ); jQuery.event.add( this, types, fn, data, selector );
}); } );
} }
/* /*
@ -117,17 +124,20 @@ jQuery.event = {
} }
// Init the element's event structure and main handler, if this is the first // Init the element's event structure and main handler, if this is the first
if ( !(events = elemData.events) ) { if ( !( events = elemData.events ) ) {
events = elemData.events = {}; events = elemData.events = {};
} }
if ( !(eventHandle = elemData.handle) ) { if ( !( eventHandle = elemData.handle ) ) {
eventHandle = elemData.handle = function( e ) { eventHandle = elemData.handle = function( e ) {
// Discard the second event of a jQuery.event.trigger() and // Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded // when an event is called after a page has unloaded
return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? return typeof jQuery !== "undefined" &&
( !e || jQuery.event.triggered !== e.type ) ?
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
undefined; undefined;
}; };
// Add elem as a property of the handle fn to prevent a memory leak // Add elem as a property of the handle fn to prevent a memory leak
// with IE non-native events // with IE non-native events
eventHandle.elem = elem; eventHandle.elem = elem;
@ -137,9 +147,9 @@ jQuery.event = {
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnotwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[t] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
type = origType = tmp[1]; type = origType = tmp[ 1 ];
namespaces = ( tmp[2] || "" ).split( "." ).sort(); namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
// There *must* be a type, no attaching namespace-only handlers // There *must* be a type, no attaching namespace-only handlers
if ( !type ) { if ( !type ) {
@ -156,7 +166,7 @@ jQuery.event = {
special = jQuery.event.special[ type ] || {}; special = jQuery.event.special[ type ] || {};
// handleObj is passed to all event handlers // handleObj is passed to all event handlers
handleObj = jQuery.extend({ handleObj = jQuery.extend( {
type: type, type: type,
origType: origType, origType: origType,
data: data, data: data,
@ -164,11 +174,11 @@ jQuery.event = {
guid: handler.guid, guid: handler.guid,
selector: selector, selector: selector,
needsContext: selector && jQuery.expr.match.needsContext.test( selector ), needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
namespace: namespaces.join(".") namespace: namespaces.join( "." )
}, handleObjIn ); }, handleObjIn );
// Init the event handler queue if we're the first // Init the event handler queue if we're the first
if ( !(handlers = events[ type ]) ) { if ( !( handlers = events[ type ] ) ) {
handlers = events[ type ] = []; handlers = events[ type ] = [];
handlers.delegateCount = 0; handlers.delegateCount = 0;
@ -217,7 +227,7 @@ jQuery.event = {
namespaces, origType, namespaces, origType,
elemData = jQuery.hasData( elem ) && jQuery._data( elem ); elemData = jQuery.hasData( elem ) && jQuery._data( elem );
if ( !elemData || !(events = elemData.events) ) { if ( !elemData || !( events = elemData.events ) ) {
return; return;
} }
@ -225,9 +235,9 @@ jQuery.event = {
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnotwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[t] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
type = origType = tmp[1]; type = origType = tmp[ 1 ];
namespaces = ( tmp[2] || "" ).split( "." ).sort(); namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
// Unbind all events (on this namespace, if provided) for the element // Unbind all events (on this namespace, if provided) for the element
if ( !type ) { if ( !type ) {
@ -240,7 +250,8 @@ jQuery.event = {
special = jQuery.event.special[ type ] || {}; special = jQuery.event.special[ type ] || {};
type = ( selector ? special.delegateType : special.bindType ) || type; type = ( selector ? special.delegateType : special.bindType ) || type;
handlers = events[ type ] || []; handlers = events[ type ] || [];
tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); tmp = tmp[ 2 ] &&
new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
// Remove matching events // Remove matching events
origCount = j = handlers.length; origCount = j = handlers.length;
@ -291,7 +302,7 @@ jQuery.event = {
bubbleType, special, tmp, i, bubbleType, special, tmp, i,
eventPath = [ elem || document ], eventPath = [ elem || document ],
type = hasOwn.call( event, "type" ) ? event.type : event, type = hasOwn.call( event, "type" ) ? event.type : event,
namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
cur = tmp = elem = elem || document; cur = tmp = elem = elem || document;
@ -305,13 +316,14 @@ jQuery.event = {
return; return;
} }
if ( type.indexOf(".") > -1 ) { if ( type.indexOf( "." ) > -1 ) {
// Namespaced trigger; create a regexp to match event type in handle() // Namespaced trigger; create a regexp to match event type in handle()
namespaces = type.split("."); namespaces = type.split( "." );
type = namespaces.shift(); type = namespaces.shift();
namespaces.sort(); namespaces.sort();
} }
ontype = type.indexOf(":") < 0 && "on" + type; ontype = type.indexOf( ":" ) < 0 && "on" + type;
// Caller can pass in a jQuery.Event object, Object, or just an event type string // Caller can pass in a jQuery.Event object, Object, or just an event type string
event = event[ jQuery.expando ] ? event = event[ jQuery.expando ] ?
@ -320,9 +332,9 @@ jQuery.event = {
// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
event.isTrigger = onlyHandlers ? 2 : 3; event.isTrigger = onlyHandlers ? 2 : 3;
event.namespace = namespaces.join("."); event.namespace = namespaces.join( "." );
event.rnamespace = event.namespace ? event.rnamespace = event.namespace ?
new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
null; null;
// Clean up the event in case it is being reused // Clean up the event in case it is being reused
@ -356,14 +368,14 @@ jQuery.event = {
} }
// Only add window if we got to document (e.g., not plain obj or detached DOM) // Only add window if we got to document (e.g., not plain obj or detached DOM)
if ( tmp === (elem.ownerDocument || document) ) { if ( tmp === ( elem.ownerDocument || document ) ) {
eventPath.push( tmp.defaultView || tmp.parentWindow || window ); eventPath.push( tmp.defaultView || tmp.parentWindow || window );
} }
} }
// Fire handlers on the event path // Fire handlers on the event path
i = 0; i = 0;
while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
event.type = i > 1 ? event.type = i > 1 ?
bubbleType : bubbleType :
@ -391,8 +403,11 @@ jQuery.event = {
// If nobody prevented the default action, do it now // If nobody prevented the default action, do it now
if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( !onlyHandlers && !event.isDefaultPrevented() ) {
if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && if (
jQuery.acceptData( elem ) ) { ( !special._default ||
special._default.apply( eventPath.pop(), data ) === false
) && jQuery.acceptData( elem )
) {
// Call a native DOM method on the target with the same name name as the event. // Call a native DOM method on the target with the same name name as the event.
// Don't do default actions on window, that's where global variables be (#6170) // Don't do default actions on window, that's where global variables be (#6170)
@ -412,6 +427,7 @@ jQuery.event = {
try { try {
elem[ type ](); elem[ type ]();
} catch ( e ) { } catch ( e ) {
// IE<9 dies on focus/blur to hidden element (#1486,#12518) // IE<9 dies on focus/blur to hidden element (#1486,#12518)
// only reproducible on winXP IE8 native, not IE9 in IE8 mode // only reproducible on winXP IE8 native, not IE9 in IE8 mode
} }
@ -439,7 +455,7 @@ jQuery.event = {
special = jQuery.event.special[ event.type ] || {}; special = jQuery.event.special[ event.type ] || {};
// Use the fix-ed jQuery.Event rather than the (read-only) native event // Use the fix-ed jQuery.Event rather than the (read-only) native event
args[0] = event; args[ 0 ] = event;
event.delegateTarget = this; event.delegateTarget = this;
// Call the preDispatch hook for the mapped type, and let it bail if desired // Call the preDispatch hook for the mapped type, and let it bail if desired
@ -452,11 +468,11 @@ jQuery.event = {
// Run delegates first; they may want to stop propagation beneath us // Run delegates first; they may want to stop propagation beneath us
i = 0; i = 0;
while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
event.currentTarget = matched.elem; event.currentTarget = matched.elem;
j = 0; j = 0;
while ( (handleObj = matched.handlers[ j++ ]) && while ( ( handleObj = matched.handlers[ j++ ] ) &&
!event.isImmediatePropagationStopped() ) { !event.isImmediatePropagationStopped() ) {
// Triggered event must either 1) have no namespace, or 2) have namespace(s) // Triggered event must either 1) have no namespace, or 2) have namespace(s)
@ -466,11 +482,11 @@ jQuery.event = {
event.handleObj = handleObj; event.handleObj = handleObj;
event.data = handleObj.data; event.data = handleObj.data;
ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
handleObj.handler ).apply( matched.elem, args ); handleObj.handler ).apply( matched.elem, args );
if ( ret !== undefined ) { if ( ret !== undefined ) {
if ( (event.result = ret) === false ) { if ( ( event.result = ret ) === false ) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} }
@ -499,7 +515,7 @@ jQuery.event = {
// //
// Support: Firefox // Support: Firefox
// Avoid non-left-click bubbling in Firefox (#3861) // Avoid non-left-click bubbling in Firefox (#3861)
if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { if ( delegateCount && cur.nodeType && ( !event.button || event.type !== "click" ) ) {
/* jshint eqeqeq: false */ /* jshint eqeqeq: false */
for ( ; cur != this; cur = cur.parentNode || this ) { for ( ; cur != this; cur = cur.parentNode || this ) {
@ -507,7 +523,7 @@ jQuery.event = {
// Don't check non-elements (#13208) // Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
matches = []; matches = [];
for ( i = 0; i < delegateCount; i++ ) { for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ]; handleObj = handlers[ i ];
@ -525,7 +541,7 @@ jQuery.event = {
} }
} }
if ( matches.length ) { if ( matches.length ) {
handlerQueue.push({ elem: cur, handlers: matches }); handlerQueue.push( { elem: cur, handlers: matches } );
} }
} }
} }
@ -533,7 +549,7 @@ jQuery.event = {
// Add the remaining (directly-bound) handlers // Add the remaining (directly-bound) handlers
if ( delegateCount < handlers.length ) { if ( delegateCount < handlers.length ) {
handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
} }
return handlerQueue; return handlerQueue;
@ -587,12 +603,12 @@ jQuery.event = {
// Includes some event props shared by KeyEvent and MouseEvent // Includes some event props shared by KeyEvent and MouseEvent
props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
"metaKey relatedTarget shiftKey target timeStamp view which" ).split(" "), "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
fixHooks: {}, fixHooks: {},
keyHooks: { keyHooks: {
props: "char charCode key keyCode".split(" "), props: "char charCode key keyCode".split( " " ),
filter: function( event, original ) { filter: function( event, original ) {
// Add which for key events // Add which for key events
@ -606,7 +622,7 @@ jQuery.event = {
mouseHooks: { mouseHooks: {
props: ( "button buttons clientX clientY fromElement offsetX offsetY " + props: ( "button buttons clientX clientY fromElement offsetX offsetY " +
"pageX pageY screenX screenY toElement" ).split(" "), "pageX pageY screenX screenY toElement" ).split( " " ),
filter: function( event, original ) { filter: function( event, original ) {
var body, eventDoc, doc, var body, eventDoc, doc,
button = original.button, button = original.button,
@ -645,10 +661,12 @@ jQuery.event = {
special: { special: {
load: { load: {
// Prevent triggered image.load events from bubbling to window.load // Prevent triggered image.load events from bubbling to window.load
noBubble: true noBubble: true
}, },
focus: { focus: {
// Fire native event if possible so blur/focus sequence is correct // Fire native event if possible so blur/focus sequence is correct
trigger: function() { trigger: function() {
if ( this !== safeActiveElement() && this.focus ) { if ( this !== safeActiveElement() && this.focus ) {
@ -656,6 +674,7 @@ jQuery.event = {
this.focus(); this.focus();
return false; return false;
} catch ( e ) { } catch ( e ) {
// Support: IE<9 // Support: IE<9
// If we error on focus to hidden element (#1486, #12518), // If we error on focus to hidden element (#1486, #12518),
// let .trigger() run the handlers // let .trigger() run the handlers
@ -674,6 +693,7 @@ jQuery.event = {
delegateType: "focusout" delegateType: "focusout"
}, },
click: { click: {
// For checkbox, fire native event so checked state will be right // For checkbox, fire native event so checked state will be right
trigger: function() { trigger: function() {
if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
@ -708,6 +728,7 @@ jQuery.event = {
{ {
type: type, type: type,
isSimulated: true isSimulated: true
// Previously, `originalEvent: {}` was set here, so stopPropagation call // Previously, `originalEvent: {}` was set here, so stopPropagation call
// would not be triggered on donor event, since in our own // would not be triggered on donor event, since in our own
// jQuery.event.stopPropagation function we had a check for existence of // jQuery.event.stopPropagation function we had a check for existence of
@ -752,8 +773,9 @@ jQuery.removeEvent = document.removeEventListener ?
}; };
jQuery.Event = function( src, props ) { jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword // Allow instantiation without the 'new' keyword
if ( !(this instanceof jQuery.Event) ) { if ( !( this instanceof jQuery.Event ) ) {
return new jQuery.Event( src, props ); return new jQuery.Event( src, props );
} }
@ -766,6 +788,7 @@ jQuery.Event = function( src, props ) {
// by a handler lower down the tree; reflect the correct value. // by a handler lower down the tree; reflect the correct value.
this.isDefaultPrevented = src.defaultPrevented || this.isDefaultPrevented = src.defaultPrevented ||
src.defaultPrevented === undefined && src.defaultPrevented === undefined &&
// Support: IE < 9, Android < 4.0 // Support: IE < 9, Android < 4.0
src.returnValue === false ? src.returnValue === false ?
returnTrue : returnTrue :
@ -822,6 +845,7 @@ jQuery.Event.prototype = {
if ( !e || this.isSimulated ) { if ( !e || this.isSimulated ) {
return; return;
} }
// If stopPropagation exists, run it on the original event // If stopPropagation exists, run it on the original event
if ( e.stopPropagation ) { if ( e.stopPropagation ) {
e.stopPropagation(); e.stopPropagation();
@ -852,7 +876,7 @@ jQuery.Event.prototype = {
// Safari sends mouseenter too often; see: // Safari sends mouseenter too often; see:
// https://code.google.com/p/chromium/issues/detail?id=470258 // https://code.google.com/p/chromium/issues/detail?id=470258
// for the description of the bug (it existed in older Chrome versions as well). // for the description of the bug (it existed in older Chrome versions as well).
jQuery.each({ jQuery.each( {
mouseenter: "mouseover", mouseenter: "mouseover",
mouseleave: "mouseout", mouseleave: "mouseout",
pointerenter: "pointerover", pointerenter: "pointerover",
@ -870,7 +894,7 @@ jQuery.each({
// For mousenter/leave call the handler if related is outside the target. // For mousenter/leave call the handler if related is outside the target.
// NB: No relatedTarget if the mouse left/entered the browser window // NB: No relatedTarget if the mouse left/entered the browser window
if ( !related || (related !== target && !jQuery.contains( target, related )) ) { if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
event.type = handleObj.origType; event.type = handleObj.origType;
ret = handleObj.handler.apply( this, arguments ); ret = handleObj.handler.apply( this, arguments );
event.type = fix; event.type = fix;
@ -878,13 +902,14 @@ jQuery.each({
return ret; return ret;
} }
}; };
}); } );
// IE submit delegation // IE submit delegation
if ( !support.submit ) { if ( !support.submit ) {
jQuery.event.special.submit = { jQuery.event.special.submit = {
setup: function() { setup: function() {
// Only need this for delegated form submit events // Only need this for delegated form submit events
if ( jQuery.nodeName( this, "form" ) ) { if ( jQuery.nodeName( this, "form" ) ) {
return false; return false;
@ -892,6 +917,7 @@ if ( !support.submit ) {
// Lazy-add a submit handler when a descendant form may potentially be submitted // Lazy-add a submit handler when a descendant form may potentially be submitted
jQuery.event.add( this, "click._submit keypress._submit", function( e ) { jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
// Node name check avoids a VML-related crash in IE (#9807) // Node name check avoids a VML-related crash in IE (#9807)
var elem = e.target, var elem = e.target,
form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ?
@ -901,14 +927,16 @@ if ( !support.submit ) {
if ( form && !jQuery._data( form, "submit" ) ) { if ( form && !jQuery._data( form, "submit" ) ) {
jQuery.event.add( form, "submit._submit", function( event ) { jQuery.event.add( form, "submit._submit", function( event ) {
event._submitBubble = true; event._submitBubble = true;
}); } );
jQuery._data( form, "submit", true ); jQuery._data( form, "submit", true );
} }
}); } );
// return undefined since we don't need an event listener // return undefined since we don't need an event listener
}, },
postDispatch: function( event ) { postDispatch: function( event ) {
// If form was submitted by the user, bubble the event up the tree // If form was submitted by the user, bubble the event up the tree
if ( event._submitBubble ) { if ( event._submitBubble ) {
delete event._submitBubble; delete event._submitBubble;
@ -919,6 +947,7 @@ if ( !support.submit ) {
}, },
teardown: function() { teardown: function() {
// Only need this for delegated form submit events // Only need this for delegated form submit events
if ( jQuery.nodeName( this, "form" ) ) { if ( jQuery.nodeName( this, "form" ) ) {
return false; return false;
@ -938,6 +967,7 @@ if ( !support.change ) {
setup: function() { setup: function() {
if ( rformElems.test( this.nodeName ) ) { if ( rformElems.test( this.nodeName ) ) {
// IE doesn't fire change on a check/radio until blur; trigger it on click // IE doesn't fire change on a check/radio until blur; trigger it on click
// after a propertychange. Eat the blur-change in special.change.handle. // after a propertychange. Eat the blur-change in special.change.handle.
// This still fires onchange a second time for check/radio after blur. // This still fires onchange a second time for check/radio after blur.
@ -946,17 +976,19 @@ if ( !support.change ) {
if ( event.originalEvent.propertyName === "checked" ) { if ( event.originalEvent.propertyName === "checked" ) {
this._justChanged = true; this._justChanged = true;
} }
}); } );
jQuery.event.add( this, "click._change", function( event ) { jQuery.event.add( this, "click._change", function( event ) {
if ( this._justChanged && !event.isTrigger ) { if ( this._justChanged && !event.isTrigger ) {
this._justChanged = false; this._justChanged = false;
} }
// Allow triggered, simulated change events (#11500) // Allow triggered, simulated change events (#11500)
jQuery.event.simulate( "change", this, event ); jQuery.event.simulate( "change", this, event );
}); } );
} }
return false; return false;
} }
// Delegated event; lazy-add a change handler on descendant inputs // Delegated event; lazy-add a change handler on descendant inputs
jQuery.event.add( this, "beforeactivate._change", function( e ) { jQuery.event.add( this, "beforeactivate._change", function( e ) {
var elem = e.target; var elem = e.target;
@ -966,10 +998,10 @@ if ( !support.change ) {
if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
jQuery.event.simulate( "change", this.parentNode, event ); jQuery.event.simulate( "change", this.parentNode, event );
} }
}); } );
jQuery._data( elem, "change", true ); jQuery._data( elem, "change", true );
} }
}); } );
}, },
handle: function( event ) { handle: function( event ) {
@ -977,7 +1009,7 @@ if ( !support.change ) {
// Swallow native change events from checkbox/radio, we already triggered them above // Swallow native change events from checkbox/radio, we already triggered them above
if ( this !== elem || event.isSimulated || event.isTrigger || if ( this !== elem || event.isSimulated || event.isTrigger ||
(elem.type !== "radio" && elem.type !== "checkbox") ) { ( elem.type !== "radio" && elem.type !== "checkbox" ) ) {
return event.handleObj.handler.apply( this, arguments ); return event.handleObj.handler.apply( this, arguments );
} }
@ -1000,7 +1032,7 @@ if ( !support.change ) {
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
if ( !support.focusin ) { if ( !support.focusin ) {
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
// Attach a single capturing handler on the document while someone wants focusin/focusout // Attach a single capturing handler on the document while someone wants focusin/focusout
var handler = function( event ) { var handler = function( event ) {
@ -1029,10 +1061,10 @@ if ( !support.focusin ) {
} }
} }
}; };
}); } );
} }
jQuery.fn.extend({ jQuery.fn.extend( {
on: function( types, selector, data, fn ) { on: function( types, selector, data, fn ) {
return on( this, types, selector, data, fn ); return on( this, types, selector, data, fn );
@ -1043,6 +1075,7 @@ jQuery.fn.extend({
off: function( types, selector, fn ) { off: function( types, selector, fn ) {
var handleObj, type; var handleObj, type;
if ( types && types.preventDefault && types.handleObj ) { if ( types && types.preventDefault && types.handleObj ) {
// ( event ) dispatched jQuery.Event // ( event ) dispatched jQuery.Event
handleObj = types.handleObj; handleObj = types.handleObj;
jQuery( types.delegateTarget ).off( jQuery( types.delegateTarget ).off(
@ -1055,6 +1088,7 @@ jQuery.fn.extend({
return this; return this;
} }
if ( typeof types === "object" ) { if ( typeof types === "object" ) {
// ( types-object [, selector] ) // ( types-object [, selector] )
for ( type in types ) { for ( type in types ) {
this.off( type, selector, types[ type ] ); this.off( type, selector, types[ type ] );
@ -1062,6 +1096,7 @@ jQuery.fn.extend({
return this; return this;
} }
if ( selector === false || typeof selector === "function" ) { if ( selector === false || typeof selector === "function" ) {
// ( types [, fn] ) // ( types [, fn] )
fn = selector; fn = selector;
selector = undefined; selector = undefined;
@ -1069,23 +1104,23 @@ jQuery.fn.extend({
if ( fn === false ) { if ( fn === false ) {
fn = returnFalse; fn = returnFalse;
} }
return this.each(function() { return this.each( function() {
jQuery.event.remove( this, types, fn, selector ); jQuery.event.remove( this, types, fn, selector );
}); } );
}, },
trigger: function( type, data ) { trigger: function( type, data ) {
return this.each(function() { return this.each( function() {
jQuery.event.trigger( type, data, this ); jQuery.event.trigger( type, data, this );
}); } );
}, },
triggerHandler: function( type, data ) { triggerHandler: function( type, data ) {
var elem = this[0]; var elem = this[ 0 ];
if ( elem ) { if ( elem ) {
return jQuery.event.trigger( type, data, elem, true ); return jQuery.event.trigger( type, data, elem, true );
} }
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,10 +1,10 @@
define([ define( [
"../core", "../core",
"../event" "../event"
], function( jQuery ) { ], function( jQuery ) {
// Attach a bunch of functions for handling common AJAX events // Attach a bunch of functions for handling common AJAX events
jQuery.each([ jQuery.each( [
"ajaxStart", "ajaxStart",
"ajaxStop", "ajaxStop",
"ajaxComplete", "ajaxComplete",
@ -15,6 +15,6 @@ jQuery.each([
jQuery.fn[ type ] = function( fn ) { jQuery.fn[ type ] = function( fn ) {
return this.on( type, fn ); return this.on( type, fn );
}; };
}); } );
}); } );

View File

@ -1,11 +1,11 @@
define([ define( [
"../core", "../core",
"../event" "../event"
], function( jQuery ) { ], function( jQuery ) {
jQuery.each( ("blur focus focusin focusout resize scroll click dblclick " + jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup contextmenu").split(" "), "change select submit keydown keypress keyup contextmenu" ).split( " " ),
function( i, name ) { function( i, name ) {
// Handle event binding // Handle event binding
@ -14,9 +14,9 @@ jQuery.each( ("blur focus focusin focusout resize scroll click dblclick " +
this.on( name, null, data, fn ) : this.on( name, null, data, fn ) :
this.trigger( name ); this.trigger( name );
}; };
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
hover: function( fnOver, fnOut ) { hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}, },
@ -32,11 +32,12 @@ jQuery.fn.extend({
return this.on( types, selector, data, fn ); return this.on( types, selector, data, fn );
}, },
undelegate: function( selector, types, fn ) { undelegate: function( selector, types, fn ) {
// ( namespace ) or ( selector, types [, fn] ) // ( namespace ) or ( selector, types [, fn] )
return arguments.length === 1 ? return arguments.length === 1 ?
this.off( selector, "**" ) : this.off( selector, "**" ) :
this.off( types, selector || "**", fn ); this.off( types, selector || "**", fn );
} }
}); } );
}); } );

View File

@ -1,17 +1,18 @@
define([ define( [
"../var/document", "../var/document",
"../var/support" "../var/support"
], function( document, support ) { ], function( document, support ) {
(function() { ( function() {
var i, eventName, var i, eventName,
div = document.createElement( "div" ); div = document.createElement( "div" );
// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)
for ( i in { submit: true, change: true, focusin: true }) { for ( i in { submit: true, change: true, focusin: true } ) {
eventName = "on" + i; eventName = "on" + i;
if ( !(support[ i ] = eventName in window) ) { if ( !( support[ i ] = eventName in window ) ) {
// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
div.setAttribute( eventName, "t" ); div.setAttribute( eventName, "t" );
support[ i ] = div.attributes[ eventName ].expando === false; support[ i ] = div.attributes[ eventName ].expando === false;
@ -20,8 +21,8 @@ define([
// Null elements to avoid leaks in IE. // Null elements to avoid leaks in IE.
div = null; div = null;
})(); } )();
return support; return support;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -18,7 +18,7 @@ define([
if ( typeof define === "function" && define.amd ) { if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() { define( "jquery", [], function() {
return jQuery; return jQuery;
}); } );
} }
}); } );

View File

@ -1,4 +1,5 @@
var var
// Map over jQuery in case of overwrite // Map over jQuery in case of overwrite
_jQuery = window.jQuery, _jQuery = window.jQuery,

6
src/jquery.js vendored
View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./selector", "./selector",
"./traversing", "./traversing",
@ -32,6 +32,6 @@ define([
"./exports/amd" "./exports/amd"
], function( jQuery ) { ], function( jQuery ) {
return (window.jQuery = window.$ = jQuery); return ( window.jQuery = window.$ = jQuery );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/concat", "./var/concat",
@ -32,12 +32,13 @@ var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ),
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
rnoInnerhtml = /<(?:script|style|link)/i, rnoInnerhtml = /<(?:script|style|link)/i,
// checked="checked" or checked // checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rscriptTypeMasked = /^true\/(.*)/, rscriptTypeMasked = /^true\/(.*)/,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
safeFragment = createSafeFragment( document ), safeFragment = createSafeFragment( document ),
fragmentDiv = safeFragment.appendChild( document.createElement("div") ); fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) );
// Manipulating tables requires a tbody // Manipulating tables requires a tbody
function manipulationTarget( elem, content ) { function manipulationTarget( elem, content ) {
@ -52,15 +53,15 @@ function manipulationTarget( elem, content ) {
// Replace/restore the type attribute of script elements for safe DOM manipulation // Replace/restore the type attribute of script elements for safe DOM manipulation
function disableScript( elem ) { function disableScript( elem ) {
elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type;
return elem; return elem;
} }
function restoreScript( elem ) { function restoreScript( elem ) {
var match = rscriptTypeMasked.exec( elem.type ); var match = rscriptTypeMasked.exec( elem.type );
if ( match ) { if ( match ) {
elem.type = match[1]; elem.type = match[ 1 ];
} else { } else {
elem.removeAttribute("type"); elem.removeAttribute( "type" );
} }
return elem; return elem;
} }
@ -149,20 +150,20 @@ function domManip( collection, args, callback, ignored ) {
i = 0, i = 0,
l = collection.length, l = collection.length,
iNoClone = l - 1, iNoClone = l - 1,
value = args[0], value = args[ 0 ],
isFunction = jQuery.isFunction( value ); isFunction = jQuery.isFunction( value );
// We can't cloneNode fragments that contain checked, in WebKit // We can't cloneNode fragments that contain checked, in WebKit
if ( isFunction || if ( isFunction ||
( l > 1 && typeof value === "string" && ( l > 1 && typeof value === "string" &&
!support.checkClone && rchecked.test( value ) ) ) { !support.checkClone && rchecked.test( value ) ) ) {
return collection.each(function( index ) { return collection.each( function( index ) {
var self = collection.eq( index ); var self = collection.eq( index );
if ( isFunction ) { if ( isFunction ) {
args[0] = value.call( this, index, self.html() ); args[ 0 ] = value.call( this, index, self.html() );
} }
domManip( self, args, callback, ignored ); domManip( self, args, callback, ignored );
}); } );
} }
if ( l ) { if ( l ) {
@ -189,13 +190,14 @@ function domManip( collection, args, callback, ignored ) {
// Keep references to cloned scripts for later restoration // Keep references to cloned scripts for later restoration
if ( hasScripts ) { if ( hasScripts ) {
// Support: Android<4.1, PhantomJS<2 // Support: Android<4.1, PhantomJS<2
// push.apply(_, arraylike) throws on ancient WebKit // push.apply(_, arraylike) throws on ancient WebKit
jQuery.merge( scripts, getAll( node, "script" ) ); jQuery.merge( scripts, getAll( node, "script" ) );
} }
} }
callback.call( collection[i], node, i ); callback.call( collection[ i ], node, i );
} }
if ( hasScripts ) { if ( hasScripts ) {
@ -212,6 +214,7 @@ function domManip( collection, args, callback, ignored ) {
jQuery.contains( doc, node ) ) { jQuery.contains( doc, node ) ) {
if ( node.src ) { if ( node.src ) {
// Optional AJAX dependency, but won't run scripts if not present // Optional AJAX dependency, but won't run scripts if not present
if ( jQuery._evalUrl ) { if ( jQuery._evalUrl ) {
jQuery._evalUrl( node.src ); jQuery._evalUrl( node.src );
@ -239,7 +242,7 @@ function remove( elem, selector, keepData ) {
elems = selector ? jQuery.filter( selector, elem ) : elem, elems = selector ? jQuery.filter( selector, elem ) : elem,
i = 0; i = 0;
for ( ; (node = elems[i]) != null; i++ ) { for ( ; ( node = elems[ i ] ) != null; i++ ) {
if ( !keepData && node.nodeType === 1 ) { if ( !keepData && node.nodeType === 1 ) {
jQuery.cleanData( getAll( node ) ); jQuery.cleanData( getAll( node ) );
@ -256,7 +259,7 @@ function remove( elem, selector, keepData ) {
return elem; return elem;
} }
jQuery.extend({ jQuery.extend( {
htmlPrefilter: function( html ) { htmlPrefilter: function( html ) {
return html.replace( rxhtmlTag, "<$1></$2>" ); return html.replace( rxhtmlTag, "<$1></$2>" );
}, },
@ -265,7 +268,7 @@ jQuery.extend({
var destElements, node, clone, i, srcElements, var destElements, node, clone, i, srcElements,
inPage = jQuery.contains( elem.ownerDocument, elem ); inPage = jQuery.contains( elem.ownerDocument, elem );
if ( support.html5Clone || jQuery.isXMLDoc(elem) || if ( support.html5Clone || jQuery.isXMLDoc( elem ) ||
!rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
clone = elem.cloneNode( true ); clone = elem.cloneNode( true );
@ -276,18 +279,19 @@ jQuery.extend({
fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
} }
if ( (!support.noCloneEvent || !support.noCloneChecked) && if ( ( !support.noCloneEvent || !support.noCloneChecked ) &&
(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {
// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
destElements = getAll( clone ); destElements = getAll( clone );
srcElements = getAll( elem ); srcElements = getAll( elem );
// Fix all IE cloning issues // Fix all IE cloning issues
for ( i = 0; (node = srcElements[i]) != null; ++i ) { for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {
// Ensure that the destination node is not null; Fixes #9587 // Ensure that the destination node is not null; Fixes #9587
if ( destElements[i] ) { if ( destElements[ i ] ) {
fixCloneNodeIssues( node, destElements[i] ); fixCloneNodeIssues( node, destElements[ i ] );
} }
} }
} }
@ -298,8 +302,8 @@ jQuery.extend({
srcElements = srcElements || getAll( elem ); srcElements = srcElements || getAll( elem );
destElements = destElements || getAll( clone ); destElements = destElements || getAll( clone );
for ( i = 0; (node = srcElements[i]) != null; i++ ) { for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {
cloneCopyEvent( node, destElements[i] ); cloneCopyEvent( node, destElements[ i ] );
} }
} else { } else {
cloneCopyEvent( elem, clone ); cloneCopyEvent( elem, clone );
@ -326,7 +330,7 @@ jQuery.extend({
attributes = support.attributes, attributes = support.attributes,
special = jQuery.event.special; special = jQuery.event.special;
for ( ; (elem = elems[i]) != null; i++ ) { for ( ; ( elem = elems[ i ] ) != null; i++ ) {
if ( acceptData || jQuery.acceptData( elem ) ) { if ( acceptData || jQuery.acceptData( elem ) ) {
id = elem[ internalKey ]; id = elem[ internalKey ];
@ -370,9 +374,9 @@ jQuery.extend({
} }
} }
} }
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
detach: function( selector ) { detach: function( selector ) {
return remove( this, selector, true ); return remove( this, selector, true );
}, },
@ -386,7 +390,7 @@ jQuery.fn.extend({
return value === undefined ? return value === undefined ?
jQuery.text( this ) : jQuery.text( this ) :
this.empty().append( this.empty().append(
( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )
); );
}, null, value, arguments.length ); }, null, value, arguments.length );
}, },
@ -397,7 +401,7 @@ jQuery.fn.extend({
var target = manipulationTarget( this, elem ); var target = manipulationTarget( this, elem );
target.appendChild( elem ); target.appendChild( elem );
} }
}); } );
}, },
prepend: function() { prepend: function() {
@ -406,7 +410,7 @@ jQuery.fn.extend({
var target = manipulationTarget( this, elem ); var target = manipulationTarget( this, elem );
target.insertBefore( elem, target.firstChild ); target.insertBefore( elem, target.firstChild );
} }
}); } );
}, },
before: function() { before: function() {
@ -414,7 +418,7 @@ jQuery.fn.extend({
if ( this.parentNode ) { if ( this.parentNode ) {
this.parentNode.insertBefore( elem, this ); this.parentNode.insertBefore( elem, this );
} }
}); } );
}, },
after: function() { after: function() {
@ -422,14 +426,15 @@ jQuery.fn.extend({
if ( this.parentNode ) { if ( this.parentNode ) {
this.parentNode.insertBefore( elem, this.nextSibling ); this.parentNode.insertBefore( elem, this.nextSibling );
} }
}); } );
}, },
empty: function() { empty: function() {
var elem, var elem,
i = 0; i = 0;
for ( ; (elem = this[i]) != null; i++ ) { for ( ; ( elem = this[ i ] ) != null; i++ ) {
// Remove element nodes and prevent memory leaks // Remove element nodes and prevent memory leaks
if ( elem.nodeType === 1 ) { if ( elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem, false ) ); jQuery.cleanData( getAll( elem, false ) );
@ -454,9 +459,9 @@ jQuery.fn.extend({
dataAndEvents = dataAndEvents == null ? false : dataAndEvents; dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
return this.map(function() { return this.map( function() {
return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
}); } );
}, },
html: function( value ) { html: function( value ) {
@ -475,14 +480,15 @@ jQuery.fn.extend({
if ( typeof value === "string" && !rnoInnerhtml.test( value ) && if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
( support.htmlSerialize || !rnoshimcache.test( value ) ) && ( support.htmlSerialize || !rnoshimcache.test( value ) ) &&
( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
value = jQuery.htmlPrefilter( value ); value = jQuery.htmlPrefilter( value );
try { try {
for (; i < l; i++ ) { for ( ; i < l; i++ ) {
// Remove element nodes and prevent memory leaks // Remove element nodes and prevent memory leaks
elem = this[i] || {}; elem = this[ i ] || {};
if ( elem.nodeType === 1 ) { if ( elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem, false ) ); jQuery.cleanData( getAll( elem, false ) );
elem.innerHTML = value; elem.innerHTML = value;
@ -518,9 +524,9 @@ jQuery.fn.extend({
// Force callback invocation // Force callback invocation
}, ignored ); }, ignored );
} }
}); } );
jQuery.each({ jQuery.each( {
appendTo: "append", appendTo: "append",
prependTo: "prepend", prependTo: "prepend",
insertBefore: "before", insertBefore: "before",
@ -535,8 +541,8 @@ jQuery.each({
last = insert.length - 1; last = insert.length - 1;
for ( ; i <= last; i++ ) { for ( ; i <= last; i++ ) {
elems = i === last ? this : this.clone(true); elems = i === last ? this : this.clone( true );
jQuery( insert[i] )[ original ]( elems ); jQuery( insert[ i ] )[ original ]( elems );
// Support: IE<9, Android<4.1, PhantomJS<2 // Support: IE<9, Android<4.1, PhantomJS<2
// .get() because push.apply(_, arraylike) throws on ancient WebKit // .get() because push.apply(_, arraylike) throws on ancient WebKit
@ -545,7 +551,7 @@ jQuery.each({
return this.pushStack( ret ); return this.pushStack( ret );
}; };
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,9 +1,9 @@
define([ define( [
"../ajax" "../ajax"
], function( jQuery ) { ], function( jQuery ) {
jQuery._evalUrl = function( url ) { jQuery._evalUrl = function( url ) {
return jQuery.ajax({ return jQuery.ajax( {
url: url, url: url,
// Make this explicit, since user can override this through ajaxSetup (#11264) // Make this explicit, since user can override this through ajaxSetup (#11264)
@ -13,9 +13,9 @@ jQuery._evalUrl = function( url ) {
async: false, async: false,
global: false, global: false,
"throws": true "throws": true
}); } );
}; };
return jQuery._evalUrl; return jQuery._evalUrl;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"./var/rtagName", "./var/rtagName",
"./var/rscriptType", "./var/rscriptType",
@ -38,22 +38,22 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Convert html into DOM nodes // Convert html into DOM nodes
} else { } else {
tmp = tmp || safe.appendChild( context.createElement("div") ); tmp = tmp || safe.appendChild( context.createElement( "div" ) );
// Deserialize a standard representation // Deserialize a standard representation
tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
wrap = wrapMap[ tag ] || wrapMap._default; wrap = wrapMap[ tag ] || wrapMap._default;
tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
// Descend through wrappers to the right content // Descend through wrappers to the right content
j = wrap[0]; j = wrap[ 0 ];
while ( j-- ) { while ( j-- ) {
tmp = tmp.lastChild; tmp = tmp.lastChild;
} }
// Manually add leading whitespace removed by IE // Manually add leading whitespace removed by IE
if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[ 0 ] ) );
} }
jQuery.merge( nodes, tmp.childNodes ); jQuery.merge( nodes, tmp.childNodes );
@ -78,7 +78,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
} }
i = 0; i = 0;
while ( (elem = nodes[ i++ ]) ) { while ( ( elem = nodes[ i++ ] ) ) {
// Skip elements already in the context collection (trac-4087) // Skip elements already in the context collection (trac-4087)
if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
@ -101,7 +101,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Capture executables // Capture executables
if ( scripts ) { if ( scripts ) {
j = 0; j = 0;
while ( (elem = tmp[ j++ ]) ) { while ( ( elem = tmp[ j++ ] ) ) {
if ( rscriptType.test( elem.type || "" ) ) { if ( rscriptType.test( elem.type || "" ) ) {
scripts.push( elem ); scripts.push( elem );
} }
@ -115,4 +115,4 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
} }
return buildFragment; return buildFragment;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./var/nodeNames" "./var/nodeNames"
], function( nodeNames ) { ], function( nodeNames ) {
@ -17,4 +17,4 @@ function createSafeFragment( document ) {
} }
return createSafeFragment; return createSafeFragment;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -13,7 +13,7 @@ function getAll( context, tag ) {
if ( !found ) { if ( !found ) {
for ( found = [], elems = context.childNodes || context; for ( found = [], elems = context.childNodes || context;
( elem = elems[i] ) != null; ( elem = elems[ i ] ) != null;
i++ i++
) { ) {
if ( !tag || jQuery.nodeName( elem, tag ) ) { if ( !tag || jQuery.nodeName( elem, tag ) ) {
@ -30,4 +30,4 @@ function getAll( context, tag ) {
} }
return getAll; return getAll;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core" "../core"
], function( jQuery ) { ], function( jQuery ) {
@ -6,14 +6,14 @@ define([
function setGlobalEval( elems, refElements ) { function setGlobalEval( elems, refElements ) {
var elem, var elem,
i = 0; i = 0;
for ( ; ( elem = elems[i] ) != null; i++ ) { for ( ; ( elem = elems[ i ] ) != null; i++ ) {
jQuery._data( jQuery._data(
elem, elem,
"globalEval", "globalEval",
!refElements || jQuery._data( refElements[i], "globalEval" ) !refElements || jQuery._data( refElements[ i ], "globalEval" )
); );
} }
} }
return setGlobalEval; return setGlobalEval;
}); } );

View File

@ -1,10 +1,10 @@
define([ define( [
"../core", "../core",
"../var/document", "../var/document",
"../var/support" "../var/support"
], function( jQuery, document, support ) { ], function( jQuery, document, support ) {
(function() { ( function() {
var div = document.createElement( "div" ), var div = document.createElement( "div" ),
fragment = document.createDocumentFragment(), fragment = document.createDocumentFragment(),
input = document.createElement( "input" ); input = document.createElement( "input" );
@ -31,6 +31,7 @@ define([
// #11217 - WebKit loses check when the name is after the checked attribute // #11217 - WebKit loses check when the name is after the checked attribute
fragment.appendChild( div ); fragment.appendChild( div );
// Support: Windows Web Apps (WWA) // Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901) // `name` and `type` must use .setAttribute for WWA (#14901)
input.setAttribute( "type", "radio" ); input.setAttribute( "type", "radio" );
@ -52,8 +53,8 @@ define([
// cleanData must set properties to undefined rather than use removeAttribute // cleanData must set properties to undefined rather than use removeAttribute
div[ jQuery.expando ] = 1; div[ jQuery.expando ] = 1;
support.attributes = !div.getAttribute( jQuery.expando ); support.attributes = !div.getAttribute( jQuery.expando );
})(); } )();
return support; return support;
}); } );

View File

@ -1,5 +1,5 @@
define(function() { define( function() {
return "abbr|article|aside|audio|bdi|canvas|data|datalist|" + return "abbr|article|aside|audio|bdi|canvas|data|datalist|" +
"details|dialog|figcaption|figure|footer|header|hgroup|main|" + "details|dialog|figcaption|figure|footer|header|hgroup|main|" +
"mark|meter|nav|output|picture|progress|section|summary|template|time|video"; "mark|meter|nav|output|picture|progress|section|summary|template|time|video";
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return (/^(?:checkbox|radio)$/i); return ( /^(?:checkbox|radio)$/i );
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return ( /^\s+/ ); return ( /^\s+/ );
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return ( /^$|\/(?:java|ecma)script/i ); return ( /^$|\/(?:java|ecma)script/i );
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return ( /<([\w:-]+)/ ); return ( /<([\w:-]+)/ );
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./support" "./support"
], function( support ) { ], function( support ) {
@ -37,4 +37,4 @@ wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.the
wrapMap.th = wrapMap.td; wrapMap.th = wrapMap.td;
return wrapMap; return wrapMap;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./core/access", "./core/access",
"./var/document", "./var/document",
@ -45,7 +45,7 @@ jQuery.offset = {
curCSSTop = jQuery.css( elem, "top" ); curCSSTop = jQuery.css( elem, "top" );
curCSSLeft = jQuery.css( elem, "left" ); curCSSLeft = jQuery.css( elem, "left" );
calculatePosition = ( position === "absolute" || position === "fixed" ) && calculatePosition = ( position === "absolute" || position === "fixed" ) &&
jQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1; jQuery.inArray( "auto", [ curCSSTop, curCSSLeft ] ) > -1;
// need to be able to calculate position if either top or left // need to be able to calculate position if either top or left
// is auto and position is either absolute or fixed // is auto and position is either absolute or fixed
@ -79,15 +79,16 @@ jQuery.offset = {
} }
}; };
jQuery.fn.extend({ jQuery.fn.extend( {
offset: function( options ) { offset: function( options ) {
// Preserve chaining for setter // Preserve chaining for setter
if ( arguments.length ) { if ( arguments.length ) {
return options === undefined ? return options === undefined ?
this : this :
this.each(function( i ) { this.each( function( i ) {
jQuery.offset.setOffset( this, options, i ); jQuery.offset.setOffset( this, options, i );
}); } );
} }
var docElem, win, rect, doc, var docElem, win, rect, doc,
@ -138,9 +139,11 @@ jQuery.fn.extend({
// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
// because it is its only offset parent // because it is its only offset parent
if ( jQuery.css( elem, "position" ) === "fixed" ) { if ( jQuery.css( elem, "position" ) === "fixed" ) {
// we assume that getBoundingClientRect is available when computed position is fixed // we assume that getBoundingClientRect is available when computed position is fixed
offset = elem.getBoundingClientRect(); offset = elem.getBoundingClientRect();
} else { } else {
// Get *real* offsetParent // Get *real* offsetParent
offsetParent = this.offsetParent(); offsetParent = this.offsetParent();
@ -163,7 +166,7 @@ jQuery.fn.extend({
// are the same in Safari causing offset.left to incorrectly be 0 // are the same in Safari causing offset.left to incorrectly be 0
return { return {
top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true) left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
}; };
}, },
@ -178,7 +181,7 @@ jQuery.fn.extend({
// //
// This logic, however, is not guaranteed and can change at any point in the future // This logic, however, is not guaranteed and can change at any point in the future
offsetParent: function() { offsetParent: function() {
return this.map(function() { return this.map( function() {
var offsetParent = this.offsetParent; var offsetParent = this.offsetParent;
while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
@ -186,9 +189,9 @@ jQuery.fn.extend({
} }
return offsetParent || docElem; return offsetParent || docElem;
}); } );
} }
}); } );
// Create scrollLeft and scrollTop methods // Create scrollLeft and scrollTop methods
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
@ -199,7 +202,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
var win = getWindow( elem ); var win = getWindow( elem );
if ( val === undefined ) { if ( val === undefined ) {
return win ? (prop in win) ? win[ prop ] : return win ? ( prop in win ) ? win[ prop ] :
win.document.documentElement[ method ] : win.document.documentElement[ method ] :
elem[ method ]; elem[ method ];
} }
@ -215,7 +218,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
} }
}, method, val, arguments.length, null ); }, method, val, arguments.length, null );
}; };
}); } );
// Support: Safari<7-8+, Chrome<37-44+ // Support: Safari<7-8+, Chrome<37-44+
// Add the top/left cssHooks using jQuery.fn.position // Add the top/left cssHooks using jQuery.fn.position
@ -227,6 +230,7 @@ jQuery.each( [ "top", "left" ], function( i, prop ) {
function( elem, computed ) { function( elem, computed ) {
if ( computed ) { if ( computed ) {
computed = curCSS( elem, prop ); computed = curCSS( elem, prop );
// if curCSS returns percentage, fallback to offset // if curCSS returns percentage, fallback to offset
return rnumnonpx.test( computed ) ? return rnumnonpx.test( computed ) ?
jQuery( elem ).position()[ prop ] + "px" : jQuery( elem ).position()[ prop ] + "px" :
@ -234,7 +238,7 @@ jQuery.each( [ "top", "left" ], function( i, prop ) {
} }
} }
); );
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,10 +1,10 @@
define([ define( [
"./core", "./core",
"./deferred", "./deferred",
"./callbacks" "./callbacks"
], function( jQuery ) { ], function( jQuery ) {
jQuery.extend({ jQuery.extend( {
queue: function( elem, type, data ) { queue: function( elem, type, data ) {
var queue; var queue;
@ -14,8 +14,8 @@ jQuery.extend({
// Speed up dequeue by getting out quickly if this is just a lookup // Speed up dequeue by getting out quickly if this is just a lookup
if ( data ) { if ( data ) {
if ( !queue || jQuery.isArray(data) ) { if ( !queue || jQuery.isArray( data ) ) {
queue = jQuery._data( elem, type, jQuery.makeArray(data) ); queue = jQuery._data( elem, type, jQuery.makeArray( data ) );
} else { } else {
queue.push( data ); queue.push( data );
} }
@ -64,15 +64,15 @@ jQuery.extend({
_queueHooks: function( elem, type ) { _queueHooks: function( elem, type ) {
var key = type + "queueHooks"; var key = type + "queueHooks";
return jQuery._data( elem, key ) || jQuery._data( elem, key, { return jQuery._data( elem, key ) || jQuery._data( elem, key, {
empty: jQuery.Callbacks("once memory").add(function() { empty: jQuery.Callbacks( "once memory" ).add( function() {
jQuery._removeData( elem, type + "queue" ); jQuery._removeData( elem, type + "queue" );
jQuery._removeData( elem, key ); jQuery._removeData( elem, key );
}) } )
}); } );
} }
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
queue: function( type, data ) { queue: function( type, data ) {
var setter = 2; var setter = 2;
@ -83,30 +83,31 @@ jQuery.fn.extend({
} }
if ( arguments.length < setter ) { if ( arguments.length < setter ) {
return jQuery.queue( this[0], type ); return jQuery.queue( this[ 0 ], type );
} }
return data === undefined ? return data === undefined ?
this : this :
this.each(function() { this.each( function() {
var queue = jQuery.queue( this, type, data ); var queue = jQuery.queue( this, type, data );
// ensure a hooks for this queue // ensure a hooks for this queue
jQuery._queueHooks( this, type ); jQuery._queueHooks( this, type );
if ( type === "fx" && queue[0] !== "inprogress" ) { if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
jQuery.dequeue( this, type ); jQuery.dequeue( this, type );
} }
}); } );
}, },
dequeue: function( type ) { dequeue: function( type ) {
return this.each(function() { return this.each( function() {
jQuery.dequeue( this, type ); jQuery.dequeue( this, type );
}); } );
}, },
clearQueue: function( type ) { clearQueue: function( type ) {
return this.queue( type || "fx", [] ); return this.queue( type || "fx", [] );
}, },
// Get a promise resolved when queues of a certain type // Get a promise resolved when queues of a certain type
// are emptied (fx is the type by default) // are emptied (fx is the type by default)
promise: function( type, obj ) { promise: function( type, obj ) {
@ -137,7 +138,7 @@ jQuery.fn.extend({
resolve(); resolve();
return defer.promise( obj ); return defer.promise( obj );
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../queue", "../queue",
"../effects" // Delay is optional because of this dependency "../effects" // Delay is optional because of this dependency
@ -15,8 +15,8 @@ jQuery.fn.delay = function( time, type ) {
hooks.stop = function() { hooks.stop = function() {
window.clearTimeout( timeout ); window.clearTimeout( timeout );
}; };
}); } );
}; };
return jQuery.fn.delay; return jQuery.fn.delay;
}); } );

View File

@ -1,14 +1,14 @@
define([ define( [
"./core", "./core",
"sizzle" "sizzle"
], function( jQuery, Sizzle ) { ], function( jQuery, Sizzle ) {
jQuery.find = Sizzle; jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors; jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.pseudos; jQuery.expr[ ":" ] = jQuery.expr.pseudos;
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText; jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML; jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains; jQuery.contains = Sizzle.contains;
}); } );

View File

@ -1 +1 @@
define([ "./selector-sizzle" ], function() {}); define( [ "./selector-sizzle" ], function() {} );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./manipulation/var/rcheckableType", "./manipulation/var/rcheckableType",
"./core/init", "./core/init",
@ -16,13 +16,16 @@ function buildParams( prefix, obj, traditional, add ) {
var name; var name;
if ( jQuery.isArray( obj ) ) { if ( jQuery.isArray( obj ) ) {
// Serialize array item. // Serialize array item.
jQuery.each( obj, function( i, v ) { jQuery.each( obj, function( i, v ) {
if ( traditional || rbracket.test( prefix ) ) { if ( traditional || rbracket.test( prefix ) ) {
// Treat each array item as a scalar. // Treat each array item as a scalar.
add( prefix, v ); add( prefix, v );
} else { } else {
// Item is non-scalar (array or object), encode its numeric index. // Item is non-scalar (array or object), encode its numeric index.
buildParams( buildParams(
prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", prefix + "[" + ( typeof v === "object" ? i : "" ) + "]",
@ -31,15 +34,17 @@ function buildParams( prefix, obj, traditional, add ) {
add add
); );
} }
}); } );
} else if ( !traditional && jQuery.type( obj ) === "object" ) { } else if ( !traditional && jQuery.type( obj ) === "object" ) {
// Serialize object item. // Serialize object item.
for ( name in obj ) { for ( name in obj ) {
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
} }
} else { } else {
// Serialize scalar item. // Serialize scalar item.
add( prefix, obj ); add( prefix, obj );
} }
@ -51,6 +56,7 @@ jQuery.param = function( a, traditional ) {
var prefix, var prefix,
s = [], s = [],
add = function( key, value ) { add = function( key, value ) {
// If value is a function, invoke it and return its value // If value is a function, invoke it and return its value
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
@ -63,12 +69,14 @@ jQuery.param = function( a, traditional ) {
// If an array was passed in, assume that it is an array of form elements. // If an array was passed in, assume that it is an array of form elements.
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
// Serialize the form elements // Serialize the form elements
jQuery.each( a, function() { jQuery.each( a, function() {
add( this.name, this.value ); add( this.name, this.value );
}); } );
} else { } else {
// If traditional, encode the "old" way (the way 1.3.2 or older // If traditional, encode the "old" way (the way 1.3.2 or older
// did it), otherwise encode params recursively. // did it), otherwise encode params recursively.
for ( prefix in a ) { for ( prefix in a ) {
@ -80,24 +88,26 @@ jQuery.param = function( a, traditional ) {
return s.join( "&" ).replace( r20, "+" ); return s.join( "&" ).replace( r20, "+" );
}; };
jQuery.fn.extend({ jQuery.fn.extend( {
serialize: function() { serialize: function() {
return jQuery.param( this.serializeArray() ); return jQuery.param( this.serializeArray() );
}, },
serializeArray: function() { serializeArray: function() {
return this.map(function() { return this.map( function() {
// Can add propHook for "elements" to filter or add form elements // Can add propHook for "elements" to filter or add form elements
var elements = jQuery.prop( this, "elements" ); var elements = jQuery.prop( this, "elements" );
return elements ? jQuery.makeArray( elements ) : this; return elements ? jQuery.makeArray( elements ) : this;
}) } )
.filter(function() { .filter( function() {
var type = this.type; var type = this.type;
// Use .is(":disabled") so that fieldset[disabled] works // Use .is(":disabled") so that fieldset[disabled] works
return this.name && !jQuery( this ).is( ":disabled" ) && return this.name && !jQuery( this ).is( ":disabled" ) &&
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
( this.checked || !rcheckableType.test( type ) ); ( this.checked || !rcheckableType.test( type ) );
}) } )
.map(function( i, elem ) { .map( function( i, elem ) {
var val = jQuery( this ).val(); var val = jQuery( this ).val();
return val == null ? return val == null ?
@ -105,11 +115,11 @@ jQuery.fn.extend({
jQuery.isArray( val ) ? jQuery.isArray( val ) ?
jQuery.map( val, function( val ) { jQuery.map( val, function( val ) {
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
}) : } ) :
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
}).get(); } ).get();
} }
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./var/support", "./var/support",
"./core/init", // Needed for hasOwn support test "./core/init", // Needed for hasOwn support test
@ -16,4 +16,4 @@ support.ownFirst = i === "0";
// Note: most support tests are defined in their respective modules. // Note: most support tests are defined in their respective modules.
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"./core", "./core",
"./traversing/var/rneedsContext", "./traversing/var/rneedsContext",
"./core/init", "./core/init",
@ -7,6 +7,7 @@ define([
], function( jQuery, rneedsContext ) { ], function( jQuery, rneedsContext ) {
var rparentsprev = /^(?:parents|prev(?:Until|All))/, var rparentsprev = /^(?:parents|prev(?:Until|All))/,
// methods guaranteed to produce a unique set when starting from a unique set // methods guaranteed to produce a unique set when starting from a unique set
guaranteedUnique = { guaranteedUnique = {
children: true, children: true,
@ -15,18 +16,18 @@ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
prev: true prev: true
}; };
jQuery.extend({ jQuery.extend( {
dir: function( elem, dir, until ) { dir: function( elem, dir, until ) {
var matched = [], var matched = [],
cur = elem[ dir ]; cur = elem[ dir ];
while ( cur && cur.nodeType !== 9 && while ( cur && cur.nodeType !== 9 &&
(until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { ( until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until ) ) ) {
if ( cur.nodeType === 1 ) { if ( cur.nodeType === 1 ) {
matched.push( cur ); matched.push( cur );
} }
cur = cur[dir]; cur = cur[ dir ];
} }
return matched; return matched;
}, },
@ -42,21 +43,21 @@ jQuery.extend({
return r; return r;
} }
}); } );
jQuery.fn.extend({ jQuery.fn.extend( {
has: function( target ) { has: function( target ) {
var i, var i,
targets = jQuery( target, this ), targets = jQuery( target, this ),
len = targets.length; len = targets.length;
return this.filter(function() { return this.filter( function() {
for ( i = 0; i < len; i++ ) { for ( i = 0; i < len; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) { if ( jQuery.contains( this, targets[ i ] ) ) {
return true; return true;
} }
} }
}); } );
}, },
closest: function( selectors, context ) { closest: function( selectors, context ) {
@ -69,14 +70,15 @@ jQuery.fn.extend({
0; 0;
for ( ; i < l; i++ ) { for ( ; i < l; i++ ) {
for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
// Always skip document fragments // Always skip document fragments
if ( cur.nodeType < 11 && (pos ? if ( cur.nodeType < 11 && ( pos ?
pos.index(cur) > -1 : pos.index( cur ) > -1 :
// Don't pass non-elements to Sizzle // Don't pass non-elements to Sizzle
cur.nodeType === 1 && cur.nodeType === 1 &&
jQuery.find.matchesSelector(cur, selectors)) ) { jQuery.find.matchesSelector( cur, selectors ) ) ) {
matched.push( cur ); matched.push( cur );
break; break;
@ -93,18 +95,19 @@ jQuery.fn.extend({
// No argument, return index in parent // No argument, return index in parent
if ( !elem ) { if ( !elem ) {
return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
} }
// index in selector // index in selector
if ( typeof elem === "string" ) { if ( typeof elem === "string" ) {
return jQuery.inArray( this[0], jQuery( elem ) ); return jQuery.inArray( this[ 0 ], jQuery( elem ) );
} }
// Locate the position of the desired element // Locate the position of the desired element
return jQuery.inArray( return jQuery.inArray(
// If it receives a jQuery object, the first element is used // If it receives a jQuery object, the first element is used
elem.jquery ? elem[0] : elem, this ); elem.jquery ? elem[ 0 ] : elem, this );
}, },
add: function( selector, context ) { add: function( selector, context ) {
@ -117,10 +120,10 @@ jQuery.fn.extend({
addBack: function( selector ) { addBack: function( selector ) {
return this.add( selector == null ? return this.add( selector == null ?
this.prevObject : this.prevObject.filter(selector) this.prevObject : this.prevObject.filter( selector )
); );
} }
}); } );
function sibling( cur, dir ) { function sibling( cur, dir ) {
do { do {
@ -130,7 +133,7 @@ function sibling( cur, dir ) {
return cur; return cur;
} }
jQuery.each({ jQuery.each( {
parent: function( elem ) { parent: function( elem ) {
var parent = elem.parentNode; var parent = elem.parentNode;
return parent && parent.nodeType !== 11 ? parent : null; return parent && parent.nodeType !== 11 ? parent : null;
@ -181,6 +184,7 @@ jQuery.each({
} }
if ( this.length > 1 ) { if ( this.length > 1 ) {
// Remove duplicates // Remove duplicates
if ( !guaranteedUnique[ name ] ) { if ( !guaranteedUnique[ name ] ) {
ret = jQuery.uniqueSort( ret ); ret = jQuery.uniqueSort( ret );
@ -194,7 +198,7 @@ jQuery.each({
return this.pushStack( ret ); return this.pushStack( ret );
}; };
}); } );
return jQuery; return jQuery;
}); } );

View File

@ -1,4 +1,4 @@
define([ define( [
"../core", "../core",
"../var/indexOf", "../var/indexOf",
"./var/rneedsContext", "./var/rneedsContext",
@ -13,14 +13,14 @@ function winnow( elements, qualifier, not ) {
return jQuery.grep( elements, function( elem, i ) { return jQuery.grep( elements, function( elem, i ) {
/* jshint -W018 */ /* jshint -W018 */
return !!qualifier.call( elem, i, elem ) !== not; return !!qualifier.call( elem, i, elem ) !== not;
}); } );
} }
if ( qualifier.nodeType ) { if ( qualifier.nodeType ) {
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( elem === qualifier ) !== not; return ( elem === qualifier ) !== not;
}); } );
} }
@ -34,7 +34,7 @@ function winnow( elements, qualifier, not ) {
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;
}); } );
} }
jQuery.filter = function( expr, elems, not ) { jQuery.filter = function( expr, elems, not ) {
@ -48,10 +48,10 @@ jQuery.filter = function( expr, elems, not ) {
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
return elem.nodeType === 1; return elem.nodeType === 1;
})); } ) );
}; };
jQuery.fn.extend({ jQuery.fn.extend( {
find: function( selector ) { find: function( selector ) {
var i, var i,
ret = [], ret = [],
@ -59,13 +59,13 @@ jQuery.fn.extend({
len = self.length; len = self.length;
if ( typeof selector !== "string" ) { if ( typeof selector !== "string" ) {
return this.pushStack( jQuery( selector ).filter(function() { return this.pushStack( jQuery( selector ).filter( function() {
for ( i = 0; i < len; i++ ) { for ( i = 0; i < len; i++ ) {
if ( jQuery.contains( self[ i ], this ) ) { if ( jQuery.contains( self[ i ], this ) ) {
return true; return true;
} }
} }
}) ); } ) );
} }
for ( i = 0; i < len; i++ ) { for ( i = 0; i < len; i++ ) {
@ -75,10 +75,10 @@ jQuery.fn.extend({
return this.pushStack( len > 1 ? jQuery.uniqueSort( ret ) : ret ); return this.pushStack( len > 1 ? jQuery.uniqueSort( ret ) : ret );
}, },
filter: function( selector ) { filter: function( selector ) {
return this.pushStack( winnow(this, selector || [], false) ); return this.pushStack( winnow( this, selector || [], false ) );
}, },
not: function( selector ) { not: function( selector ) {
return this.pushStack( winnow(this, selector || [], true) ); return this.pushStack( winnow( this, selector || [], true ) );
}, },
is: function( selector ) { is: function( selector ) {
return !!winnow( return !!winnow(
@ -92,6 +92,6 @@ jQuery.fn.extend({
false false
).length; ).length;
} }
}); } );
}); } );

View File

@ -1,6 +1,6 @@
define([ define( [
"../../core", "../../core",
"../../selector" "../../selector"
], function( jQuery ) { ], function( jQuery ) {
return jQuery.expr.match.needsContext; return jQuery.expr.match.needsContext;
}); } );

View File

@ -1,4 +1,5 @@
define(function() { define( function() {
// [[Class]] -> type pairs // [[Class]] -> type pairs
return {}; return {};
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"./deletedIds" "./deletedIds"
], function( deletedIds ) { ], function( deletedIds ) {
return deletedIds.concat; return deletedIds.concat;
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return []; return [];
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return window.document; return window.document;
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"./document" "./document"
], function( document ) { ], function( document ) {
return document.documentElement; return document.documentElement;
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"./class2type" "./class2type"
], function( class2type ) { ], function( class2type ) {
return class2type.hasOwnProperty; return class2type.hasOwnProperty;
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"./deletedIds" "./deletedIds"
], function( deletedIds ) { ], function( deletedIds ) {
return deletedIds.indexOf; return deletedIds.indexOf;
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
}); } );

View File

@ -1,5 +1,5 @@
define([ define( [
"./deletedIds" "./deletedIds"
], function( deletedIds ) { ], function( deletedIds ) {
return deletedIds.push; return deletedIds.push;
}); } );

View File

@ -1,7 +1,7 @@
define([ define( [
"../var/pnum" "../var/pnum"
], function( pnum ) { ], function( pnum ) {
return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
}); } );

View File

@ -1,3 +1,3 @@
define(function() { define( function() {
return (/\S+/g); return ( /\S+/g );
}); } );

Some files were not shown because too many files have changed in this diff Show More