Any problem with jQuery in the above browsers should be reported as a bug in jQuery.
-
(Current - 1) or Current denotes that we support the current stable version of the browser and the version that preceded it. For example, if the current version of a browser is 24.x, we support the 24.x and 23.x versions.
-
12.1x, (Current - 1) or Current denotes that we support Opera 12.1x as well as last 2 versions of Opera. For example, if the current Opera version is 20.x, we support Opera 12.1x, 19.x and 20.x but not Opera 15.x through 18.x.
-
-
-
Unsupported Browsers
-
While jQuery might run without major issues in older browser versions, we do not actively test jQuery in them and generally do not fix bugs that may appear in them.
-
-
Similarly, jQuery does not fix bugs in pre-release versions of browsers, such as beta or dev releases. If you find a bug with jQuery in a pre-release of a browser, you should report the bug to the browser vendor.
-
-
-
-
About Browser Support
-
jQuery is constantly tested with all of its supported browsers via unit tests. However, a web page using jQuery may not work in the same set of browsers if its own code takes advantage of (or falls prey to) browser-specific behaviors. Testing is essential to fully support a browser. The modern.IE site makes available virtual machines for testing many different versions of Internet Explorer. Older versions of other browsers can be found at oldversion.com.
-
-
Only the most current version of jQuery is tested and updated to fix bugs or add features. Users of older versions that find a bug should upgrade to the latest released version to determine if the bug has already been fixed. The jQuery Migrate plugin may be helpful in identifying and fixing problems during a version upgrade.
-
-
-
-
About CSS Selector Compatibility
-
Regardless of a browser's support of CSS selectors, all selectors listed at api.jquery.com/category/selectors/ will return the correct set of elements when passed as an argument of the jQuery function.
-
CSS styles applied with jQuery's .css() method are dependent on the browser's level of support. In general, jQuery does not attempt to overcome the limitations of a browser's style rendering. (One exception is opacity, which jQuery "shims" for older Internet Explorer's alternative implementation.) Furthermore, prior to version 1.8, jQuery does not normalize vendor-prefixed properties.
diff --git a/pages/browser-support.md b/pages/browser-support.md
new file mode 100644
index 0000000..11b8bcf
--- /dev/null
+++ b/pages/browser-support.md
@@ -0,0 +1,53 @@
+
+
+## Current Active Support
+
+### Desktop
+
+* Chrome: (Current - 1) and Current
+* Edge: (Current - 1) and Current
+* Firefox: (Current - 1) and Current, ESR
+* Internet Explorer: 9+
+* Safari: (Current - 1) and Current
+* Opera: Current
+
+### Mobile
+
+* Stock browser on Android 4.0+[1]
+* Safari on iOS 7+[1]
+
+[1]: Workarounds for Android Browser 4.0-4.3, iOS 7 & iOS 10 are present in the code base, but we no longer actively test these versions. iOS 8, iOS 9 as well as iOS 11 & newer versions are tested.
+
+Any problem with jQuery in the above browsers should be reported as a bug in jQuery.
+
+(Current - 1) and Current denotes that we support the current stable version of the browser and the version that preceded it. For example, if the current version of a browser is 24.x, we support the 24.x and 23.x versions.
+
+Firefox ESR (Extended Support Release) is a Firefox version for use by organizations including schools, universities, businesses and others who need extended support for mass deployments. It is based on a regular release of Firefox and synced from the next regular Firefox every few releases - example ESR versions include Firefox 47, 52 & 60. At any given time there are at most two ESR versions available; jQuery supports both of them. See [the Mozilla site](https://www.mozilla.org/en-US/firefox/organizations/) for more information.
+
+If you need to support older browsers like Internet Explorer 6-8, Opera 12.1x or Safari 5.1+, download [jQuery 1.12](https://releases.jquery.com/jquery/#jquery-all-1.x) instead.
+
+-----
+
+## Unsupported Browsers
+
+While jQuery might run without major issues in older browser versions, we do not actively test jQuery in them and generally do not fix bugs that may appear in them.
+
+Similarly, jQuery does not fix bugs in pre-release versions of browsers, such as beta or dev releases. If you find a bug with jQuery in a pre-release of a browser, you should report the bug to the browser vendor.
+
+-----
+
+## About Browser Support
+
+jQuery is constantly tested with all of its supported browsers via unit tests. However, a web page using jQuery may not work in the same set of browsers if its own code takes advantage of (or falls prey to) browser-specific behaviors. Testing is essential to fully support a browser.
+
+Only the most current version of jQuery is tested and updated to fix bugs or add features. Users of older versions that find a bug should upgrade to the latest released version to determine if the bug has already been fixed. The [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate/#readme) may be helpful in identifying and fixing problems during a version upgrade.
+
+-----
+
+## About CSS Selector Compatibility
+
+Regardless of a browser's support of CSS selectors, all selectors listed at https://api.jquery.com/category/selectors/ will return the correct set of elements when passed as an argument of the `jQuery` function.
+
+CSS styles applied with jQuery's `.css()` method are dependent on the browser's level of support. In general, jQuery does not attempt to overcome the limitations of a browser's style rendering. (One exception is `opacity`, which jQuery "shims" for older Internet Explorer's alternative implementation.) Furthermore, prior to version 1.8, jQuery does not normalize vendor-prefixed properties.
diff --git a/pages/download.md b/pages/download.md
index aa4a53d..5b1acca 100644
--- a/pages/download.md
+++ b/pages/download.md
@@ -1,147 +1,104 @@
-## Downloading jQuery
-
-Compressed and uncompressed copies of jQuery files are available. The uncompressed file is best used during development or debugging; the compressed file saves bandwidth and improves performance in production.
-You can also download a [sourcemap file](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) for use when debugging with a compressed file.
-The map file is _not_ required for users to run jQuery, it just improves the developer's debugger experience.
-As of jQuery 1.11.0/2.1.0 the `//# sourceMappingURL` comment is [not included](http://blog.jquery.com/?p=3344) in the compressed file.
+## Latest version
To locally download these files, right-click the link and select "Save as..." from the menu.
-### jQuery 1.x
-
-The jQuery 1.x line had major changes as of jQuery 1.9.0. We _strongly_
-recommend that you also use the jQuery Migrate plugin if you are upgrading from
-pre-1.9 versions of jQuery or need to use plugins that haven't yet been updated.
-Read the [jQuery 1.9 Upgrade Guide](http://jquery.com/upgrade-guide/1.9/)
-and the [jQuery 1.9 release blog post](http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/)
-for more information.
+Download the compressed, production version:
-Download the compressed, production jQuery 1.11.2
+Download jQuery 3.7.1
-Download the uncompressed, development jQuery 1.11.2
+* [Download the uncompressed development version of jQuery 3.7.1](https://code.jquery.com/jquery-3.7.1.js)
+* [Download the map file for jQuery 3.7.1](https://code.jquery.com/jquery-3.7.1.min.map)
+* [jQuery 3.7.1 blog post with release notes](https://blog.jquery.com/2023/08/28/jquery-3-7-1-released-reliable-table-row-dimensions/)
-Download the map file for jQuery 1.11.2
+The slim build is a smaller version, that excludes the [ajax](https://api.jquery.com/category/ajax/) and [effects](https://api.jquery.com/category/effects/) modules:
-[jQuery 1.11.2 release
-notes](http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/)
+* [Download jQuery 3.7.1 slim build](https://code.jquery.com/jquery-3.7.1.slim.min.js)
+* [Download the uncompressed development version of the jQuery 3.7.1 slim build](https://code.jquery.com/jquery-3.7.1.slim.js)
+* [Download the map for the jQuery 3.7.1 slim build](https://code.jquery.com/jquery-3.7.1.slim.min.map)
-### jQuery 2.x
+The uncompressed version is best used during development or debugging; the compressed file saves bandwidth and improves performance in production. You can download the [source map](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) file to help with debugging the compressed production version. The source map is _not_ required for end-users to run jQuery; it is a tool to help improve a developer's debugging experience. As of jQuery 1.11/2.1, we [no longer link source maps](https://blog.jquery.com/2014/01/24/jquery-1-11-and-2-1-released/) to compressed releases by default.
-jQuery 2.x has the same API as jQuery 1.x, but _does not support Internet Explorer 6, 7, or 8_.
-All the notes in the [jQuery 1.9 Upgrade Guide](http://jquery.com/upgrade-guide/1.9/) apply here as well.
-Since IE 8 is still relatively common, we recommend using the 1.x version unless you
-are certain no IE 6/7/8 users are visiting the site.
-Please read the [2.0 release notes](http://blog.jquery.com/2013/04/18/jquery-2-0-released/) carefully.
+Browse the jQuery CDN at **[releases.jquery.com](https://releases.jquery.com)** for a full list of assets, including older and historical versions.
-Download the compressed, production jQuery 2.1.3
+### Upgrade
-Download the uncompressed, development jQuery 2.1.3
+For help when upgrading jQuery, read the [upgrade guides](/upgrade-guide/).
+We also recommend using the [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate).
-Download the map file for jQuery 2.1.3
+### jQuery Migrate Plugin
-[jQuery 2.1.3 release
-notes](http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/)
+The [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate/#readme) simplifies upgrading from older versions of jQuery. The plugin restores deprecated features and behaviors so that older code will still run properly on newer versions of jQuery.
-## Downloading jQuery using Bower
-jQuery is registered as a package with [Bower](http://bower.io). You can install the latest version of jQuery with the command:
-```
-bower install jquery
-```
-This will install jQuery to Bower's install directory, the default being `bower_components`. Within `bower_components/jquery/dist/` you will find an uncompressed release, a compressed release, and a map file.
+When upgrading from a pre-1.9 jQuery version to jQuery 1.9 or up to jQuery 3.0, first use jQuery Migrate 1.x:
-The jQuery Bower package contains additional files besides the default distribution. In most cases you can ignore these files, however if you wish to download the default release on it's own you can use Bower to install jQuery from one of the above urls instead of the registered package. For example, if you wish to install just the compressed jQuery 2.1.0, you can install just that file with the following command:
-```
-bower install http://code.jquery.com/jquery-2.1.3.min.js
-```
+* Download jQuery Migrate 1.4.1 (compressed production version)
+* Download the uncompressed, development jQuery Migrate 1.4.1
-## jQuery Migrate Plugin
+When migrating from jQuery 3.x to a later jQuery 3.x version, use jQuery Migrate 3.x instead:
-We have created the [jQuery Migrate plugin](http://github.com/jquery/jquery-migrate/#readme)
-to simplify the transition from older versions of jQuery. The plugin restores deprecated features and behaviors so that older code will still run properly on jQuery 1.9 and later. Use the _uncompressed development_ version to diagnose compatiblity issues, it will generate warnings on the console that you can use to identify and fix problems. Use the _compressed production_ version to simply fix compatibility issues without generating console warnings.
+* Download jQuery Migrate 3.5.0 (compressed production version)
+* Download the uncompressed, development jQuery Migrate 3.5.0
-Download the compressed, production jQuery Migrate 1.2.1
+Use the _compressed production_ version to restore compatibility issues without changing any application code.
-Download the uncompressed, development jQuery Migrate 1.2.1
+Use the _uncompressed development_ version to additionally diagnose and help migrate compatibility issues, through helpful warnings on the console that identify how to transition your application code.
-## Cross-Browser Testing with jQuery
+## Downloading jQuery using npm or Yarn
-Be sure to test web pages that use jQuery in all the browsers you want to support. The [modern.IE](http://modern.ie/) site makes available [virtual machines](http://www.modern.ie/en-us/virtualization-tools#downloads) for testing many different versions of Internet Explorer. Older versions of other browsers can be found at [oldversion.com](http://oldversion.com/).
+jQuery is published on [npm](https://www.npmjs.com/) under the [jquery package](https://www.npmjs.com/package/jquery). You can install the latest version of jQuery with the npm CLI:
+```
+npm install jquery
+```
+As an alternative you can use the [Yarn CLI](https://github.com/yarnpkg/yarn):
+```
+yarn add jquery
+```
+This will install jQuery in the `node_modules` directory. Within `node_modules/jquery/dist/` you will find an uncompressed release, a compressed release, and a map file.
## jQuery Pre-Release Builds
-The jQuery team is constantly working to improve the code. Each commit to the Github repo generates a work-in-progress version of the code that we update on the jQuery CDN. _These versions are sometimes unstable and not suitable for production sites._ We recommend they be used to determine whether a bug has already been fixed when reporting bugs against released versions, or to see if new bugs have been introduced. There are two versions, one for the 1.x branch (supports IE 6/7/8) and one for the 2.x branch (not for use with old IE).
+The jQuery team is constantly working to improve the code. Each commit to the Github repo generates a work-in-progress version of the code that we update on the jQuery CDN. We recommend they be used to determine whether a bug has already been fixed when reporting bugs against released versions, or to see if new bugs have been introduced.
-Download the work-in-progress jQuery **1.x** build
+_These versions are sometimes unstable and never suitable for production sites._
-Download the work-in-progress jQuery **2.x** build
+Browse Git builds of jQuery
-## Using jQuery with a CDN
+## [jQuery CDN](https://releases.jquery.com)
-[CDNs](http://en.wikipedia.org/wiki/Content_delivery_network) can offer a performance benefit by hosting jQuery on servers spread across the globe. This also offers an advantage that
-if the visitor to your webpage has already downloaded a copy of jQuery from the same CDN, it won't have to be re-downloaded.
+To use the jQuery CDN, reference the file in the script tag directly from the jQuery CDN domain. You can get the complete script tag, including Subresource Integrity attribute, by visiting https://releases.jquery.com and clicking on the version of the file that you want to use. Copy and paste that tag into your HTML file.
-### jQuery's CDN provided by [MaxCDN](http://www.maxcdn.com)
+The jQuery CDN supports [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) (SRI) ([specification](https://www.w3.org/TR/SRI/)) which allows the browser to verify that the files being delivered have not been modified. Adding the new integrity attribute will ensure your application gains this security improvement in supporting browsers.
-To use the jQuery CDN, just reference the file directly from `http://code.jquery.com` in the script tag:
-```
-
-
-```
+Starting with jQuery 1.9, [sourcemap files](https://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps) are available on the jQuery CDN. However, as of version 1.10.0/2.1.0 the compressed jQuery no longer includes the sourcemap comment in CDN copies because it requires the uncompressed file and sourcemap file to be placed at the same location as the compressed file. If you are maintaining local copies and can control the locations all three files, you can add the sourcemap comment to the compressed file for easier debugging.
-Starting with jQuery 1.9, [sourcemap files](http://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps) are available on the jQuery CDN as well. If compressed files are included directly from the CDN as shown above, sourcemap-aware browsers such as Google Chrome will use them when you enable sourcemap support.
-
-To see all available files and versions, visit [http://code.jquery.com](http://code.jquery.com)
+To see all available files and versions, including older and historical versions, visit [https://releases.jquery.com](https://releases.jquery.com)
### Other CDNs
-The following CDNs also host compressed and uncompressed versions of jQuery releases. Starting with jQuery 1.9 they may also host [sourcemap files](http://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps); check the site's documentation.
+The following CDNs also host compressed and uncompressed versions of jQuery releases. Starting with jQuery 1.9 they may also host [sourcemap files](https://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps); check the site's documentation.
-**Note that there may be delays between a jQuery release and its availability there. Please be patient, they receive the files at the same time the blog post is made public. Beta and release candidates are not hosted by these CDNs.**
+Note that **there may be delays between a jQuery release and its availability there**. Please be patient, they receive the files at the same time the blog post is made public. Beta and release candidates are not hosted by these CDNs.
-* [Google CDN](https://developers.google.com/speed/libraries/devguide#jquery)
-* [Microsoft CDN](http://www.asp.net/ajaxlibrary/cdn.ashx#jQuery_Releases_on_the_CDN_0)
-* [CDNJS CDN](http://cdnjs.com/libraries/jquery/)
-* [jsDelivr CDN](http://www.jsdelivr.com/#!jquery)
+* [Google CDN](https://developers.google.com/speed/libraries#jquery)
+* [Microsoft CDN](https://learn.microsoft.com/en-us/aspnet/ajax/cdn/overview#jQuery_Releases_on_the_CDN_0)
+* [CDNJS CDN](https://cdnjs.com/libraries/jquery/)
+* [jsDelivr CDN](https://www.jsdelivr.com/package/npm/jquery)
## About the Code
-**jQuery is provided under the MIT license.**
-
-The code is hosted and developed in the [jQuery GitHub repository](http://github.com/jquery/jquery). If you've spotted some areas of code that could be improved, please feel free to discuss it on the [Developing jQuery Core Forum](https://forum.jquery.com/developing-jquery-core). If you'd like to participate in developing jQuery, peruse our [contributor site](http://contribute.jquery.org) for more information.
-
-To find and download plugins developed by jQuery contributors, please visit the Plugins site. Plugin authors are responsible for maintenance of their plugins. Feedback on plugins should be directed to the plugin author, not the jQuery team.
-
-### Build from Git
-
-*Note:* To just use the latest work-in-progress version of jQuery, please try the jQuery Pre-Release Build described above.
-
-All source code is kept under Git revision control, which you can browse online. The repository's README has more information on building and testing your own jQuery, as well as instructions on creating a custom build that excludes some APIs to reduce file size.
+**jQuery is provided under the MIT license.**
-If you have access to Git, you can connect to the repository here:
-
-``` bash
-git clone git://github.com/jquery/jquery.git
-```
-
-You can also check out and build a specific version of jQuery from GitHub:
-
-``` bash
-git clone git://github.com/jquery/jquery.git
-git checkout 1.2.6
-```
+The code is hosted and developed in the [jQuery GitHub repository](https://github.com/jquery/jquery). If you've spotted some areas of code that could be improved, feel free to [report a bug](https://contribute.jquery.org/bug-reports/). If you'd like to participate in developing jQuery, peruse our [contributor site](https://contribute.jquery.org) for more information.
-The README file for a specific version will have instructions for building that version, as the process has changed over time.
+Feedback about a jQuery plugin should be directed to the plugin author, not the jQuery team.
-***
+-----
## Past Releases
-All past releases can be found on the [jQuery CDN](http://code.jquery.com).
+All past releases can be found on the [jQuery CDN](https://releases.jquery.com).
diff --git a/pages/index.html b/pages/index.html
index 5e5c5ec..e91d4ce 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -2,29 +2,33 @@
"title": "jQuery",
"pageTemplate": "page-fullwidth.php",
"customFields": [
- { "key": "hide_title", "value": 1 }
+ { "key": "hide_title", "value": 1 }
]
}
a multitude of browsers. With a combination of versatility and
extensibility, jQuery has changed the way that millions of people write
JavaScript.
-
-
Corporate Members
-
-
Support from our corporate members makes it possible for the jQuery
- Foundation to continue our work on our JavaScript libraries and pushing
- the open web forward with events and participation in the standards process.
- View our members page for a full
- list of corporate and individual members.
+
diff --git a/pages/license.md b/pages/license.md
new file mode 100644
index 0000000..d7a0d4d
--- /dev/null
+++ b/pages/license.md
@@ -0,0 +1,27 @@
+
+
+**Note:** For the purposes of this document, the term "Project" will refer to any [OpenJS Foundation](https://openjsf.org/projects/) project using the MIT license **AND** referencing this document in the header of the distributed Project code or Project website source code.
+
+## Source Code
+
+Projects referencing this document are released under the terms of the [MIT license](https://tldrlegal.com/license/mit-license).
+
+The MIT License is simple and easy to understand and it places almost no restrictions on what you can do with the Project.
+
+You are free to use the Project in any other project (even commercial projects) as long as the copyright header is left intact.
+
+## Sample Code
+
+All demos and examples, whether in a Project's repository or displayed on a Project site, are released under the terms of the license as specified in the relevant repository. Many Projects choose to release their sample code under the terms of [CC0](https://www.tldrlegal.com/license/creative-commons-cc0-1-0-universal).
+
+CC0 is even more permissive than the MIT license, allowing you to use the code in any manner you want, without any copyright headers, notices, or other attribution.
+
+## Web Sites
+
+The content on a Project web site referencing this document in its header is released under the terms of the license specified in the website's repository or if not specified, under the [MIT license](https://tldrlegal.com/license/mit-license).
+
+**The design, layout, and look-and-feel of a Project website is not licensed for use and may not be used on any site, personal or commercial, without prior written consent from the OpenJS Foundation**.
+
+For information regarding OpenJS Foundation trademarks, please see [Trademark Policy](https://trademark-policy.openjsf.org/) and [Trademark List](https://trademark-list.openjsf.org/).
diff --git a/pages/meetups.md b/pages/meetups.md
index 51467f9..acdcbcd 100644
--- a/pages/meetups.md
+++ b/pages/meetups.md
@@ -6,9 +6,9 @@ Meetups are a great way to meet other community members, expand your knowledge,
socialize, and show off what you've been working on.
Thousands of developers get together every month all over the world to share
-their knowledge. Check out meetup.com to find a [jQuery](http://jquery.meetup.com/)
-or [JavaScript](http://javascript.meetup.com/) meetup near you. Can't find a
-meetup near you? Consider [creating your own meetup](http://www.meetup.com/create/)!
+their knowledge. Check out meetup.com to find a
+[jQuery or JavaScript related meetup](https://www.meetup.com/find/)
+near you.
-Looking for larger events? We have plenty of
-[trainings and conferences](http://events.jquery.org/) all over the world too!
+Looking for larger events? We have
+[trainings and conferences](https://events.jquery.org/) all over the world too!
diff --git a/pages/support.md b/pages/support.md
new file mode 100644
index 0000000..5906abc
--- /dev/null
+++ b/pages/support.md
@@ -0,0 +1,93 @@
+
+
+## Supported versions
+
+We support only the latest version of jQuery. The 1.x and 2.x branches are no longer supported.
+
+jQuery 3.x is the current version branch of jQuery.
+
+jQuery 4.0 is in beta. Once jQuery 4.0 is released, we will provide security patches and bug fixes on the 3.x branch for a limited time.
+
+### Unsupported versions
+
+When using a version earlier than the latest version, there are a few options:
+
+* [Upgrade](/download#upgrade) to the latest version of jQuery. The best solution is to upgrade as it will include all features, bug fixes, security patches, and improvements. The [jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate) and [upgrade guides](/upgrade-guide) are available to assist with upgrading.
+* Continue using an older version of jQuery, but include all security patches through [commercial security support](#commercial-support).
+* Continue using an older version of jQuery without security patches. **However, this can come with multiple risks.**
+
+## Community support
+
+The following learning resources are available online and free of charge:
+
+* [jQuery Learning Center](https://learn.jquery.com/)
+* [jQuery API Documentation](https://api.jquery.com/)
+* [jQuery UI Demos](https://jqueryui.com/demos/)
+* [jQuery UI API Documentation](https://api.jqueryui.com/)
+
+### Matrix chat
+
+jQuery is on Matrix! The support channel for jQuery is [#jquery_jquery:gitter.im](https://app.element.io/#/room/#jquery_jquery:gitter.im). You can [read the channel on Element](https://app.element.io/#/room/#jquery_jquery:gitter.im) without an account, or [join the channel](https://matrix.to/#/#jquery_jquery:gitter.im) via any Matrix client.
+
+We use the public [#jquery_dev channel](https://app.element.io/#/room/#jquery_dev:gitter.im) to discuss project developments. We also hold [weekly meetings](https://meetings.jquery.org/) on Matrix.
+
+### IRC chat
+
+We are on [Libera Chat IRC](https://libera.chat/) in the `#jquery` channel where you can ask for support. You can [join via webchat](https://web.libera.chat/#jquery), or via any IRC client.
+
+### StackOverflow
+
+StackOverflow is a great place to ask questions and find support for all jQuery projects. Search or create [questions tagged with "jquery"](https://stackoverflow.com/questions/tagged/jquery), or refer to the ["jquery" tag introduction](https://stackoverflow.com/tags/jquery/info).
+
+## Commercial support
+
+The following companies offer commercial support services for jQuery.
+
+[HeroDevs](https://www.herodevs.com/support/jquery-nes?utm_source=jQuery&utm_medium=link&utm_campaign=eol_support_jQuery) offers security and compatibility support for EOL versions of jQuery through the [OpenJS Ecosystem Sustainability Program](https://openjsf.org/ecosystem-sustainability-program) and is an approved commercial support vendor. Find out more about their [Never Ending Support options](https://www.herodevs.com/support/jquery-nes?utm_source=jQuery&utm_medium=link&utm_campaign=eol_support_jQuery).
+
+-------
+
+## Follow us
+
+jQuery on Mastodon and the Fediverse:
+
+* [@jquery@social.lfx.dev](https://social.lfx.dev/@jquery)
+* [@qunit@fosstodon.org](https://fosstodon.org/@qunit)
+* [@openjsf@social.lfx.dev](https://social.lfx.dev/@openjsf)
+
+jQuery on Twitter:
+
+* [@jquery](https://twitter.com/jquery)
+* [@jqueryui](https://twitter.com/jqueryui)
+* [@jquerymobile](https://twitter.com/jquerymobile)
+* [@qunitjs](https://twitter.com/qunitjs)
+* [@jqcon](https://twitter.com/jqcon)
+
+-------
+
+## Media & Press inquiry
+
+Journalists seeking information on jQuery should contact: [info@jquery.com](mailto:info@jquery.com).
+
+For guidance on branding and trademark usage, visit .
+
+-------
+
+## Found a bug?
+
+For reporting bugs in libraries, documentation, or content, the project's GitHub issue tracker should be used. All jQuery projects can be found at https://github.com/jquery
+
+Still haven't found what you're looking for? Please feel free to contact: [info@jquery.com](mailto:info@jquery.com)
+
+-------
+
+## Archives
+
+* [Freenode IRC chat channels](https://irc.jquery.org/) (2011-2021)
+* [jQuery Forum](https://forum.jquery.com/) (2010-2021): For questions and advice regarding jQuery Core, jQuery UI, Themeroller, QUnit, development of jQuery Plugins, and more.
+* [jQuery Accessibility mailing list](https://groups.google.com/group/jquery-a11y) (2008-2016).
+
diff --git a/pages/team.html b/pages/team.html
new file mode 100644
index 0000000..64e7a4d
--- /dev/null
+++ b/pages/team.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
Richard Gibson
+
Core | QUnit | Former Sizzle Lead
+
+
+
+
Michał Gołębiowski-Owczarek
+
Core | UI
+
+
+
+
Felix Nagel
+
UI
+
+
+
+
Timo Tijhof
+
QUnit | Infrastructure Lead
+
+
+
+
Timmy Willison
+
Core Lead
+
+
+
+
Rafael Xavier
+
Globalize Lead
+
+
+
+
+
+
Past Team Members
+
These are the members of the jQuery team alumni. We recognize them for their contributions to current and past jQuery Projects. They may not be as active in the project as they were before but will always be considered key contributors to the jQuery Projects.
+
+
Brandon Aaron
Core
+
Clark Allan
Infrastructure
+
Mike Alsup
API, Forum, and Plugins
+
Julian Aubourg
Core | Standards
+
Paul Bakaus
jQuery UI Creator
+
Leo Balter
QUnit Lead | Standards
+
Rey Bango
Developer Relations
+
John Bender
Mobile
+
Tyler Benzinger
Mobile
+
Jay Blanchard
Developer Relations
+
Kin Blas
Mobile
+
Kris Borchers
Executive Director (formerly jQuery Foundation)
+
Kevin Boudloche
Developer Relations
+
Nate Cavanaugh
Design and Web
+
Darcy Clarke
Design and Web
+
Anne-Gaelle Colom
Content | Secretary (formerly jQuery Foundation)
+
Kim Cooperrider
Events
+
Maggie Costello Wachs
Mobile
+
Chris Coyier
Design
+
Richard D. Worth
Executive Director, UI
+
Aurelio De Rosa
Content
+
Alex Dovenmuehle
UI
+
Isaac Durazo
Outreach (Design)
+
Nate Eagle
Design
+
Ariel Flesler
Core
+
Corey Frang
Infrastructure
+
Sarah Frisk
Chassis Lead | Mobile
+
Cory Gackenheimer
Mobile
+
Oleg Gaidarenko
Core
+
Ryan Gibbons
Infrastructure
+
Skye Giordano
Design
+
Scott González
jQuery UI Lead | PEP Lead
+
Maurice Gottlieb
Mobile
+
Marc Grabanski
UI
+
James M. Greene
QUnit
+
Jasper de Groot
Mobile
+
Klaus Hartl
UI
+
Dan Heberden
Content
+
Mike Hostetler
Infrastructure and Operations
+
Paul Irish
Standards
+
Scott Jehl
Mobile
+
Yehuda Katz
Standards
+
Sean Koole
Content
+
Chris Lea
Infrastructure
+
Jeff Lembeck
Mobile
+
Cody Lindley
Developer Relations
+
Andrew Lunny
Globalize
+
Mat Marquis
Mobile
+
Dave Methvin
Core | President (formerly jQuery Foundation)
+
Rohit Mulange
Chassis
+
Doug Neiner
Design
+
Ryan Neufeld
Infrastructure
+
Addy Osmani
Content
+
Todd Parker
Mobile
+
Kevin Partington
ESLint | QUnit
+
David Petersen
UI
+
Stefan Petre
Creator of Interface Plugin
+
Abby Phoenix
Events
+
Tane Piper
Developer Relations
+
Corey Quinn
Web
+
Philippe Rathé
QUnit
+
John Resig
Creator of the jQuery Library | Emeritus Member (formerly jQuery Foundation)
+
Alex Schmitz
Mobile Lead | UI | PEP | Chassis | Infrastructure | Standards
Core | UI | At-large Director (formerly jQuery Foundation)
+
Leah Silber
Events
+
Amanpreet Singh
Mobile
+
Adam Sontag
Conduct | Events
+
Marius Stefan Bethge
PEP
+
Karl Swedberg
Content
+
Nate Tassinari
Events
+
Patty Toland
Mobile
+
Adam Ulvi
Infrastructure Lead
+
TJ VanToll
UI
+
Arthur Verschaeve
Content
+
Rick Waldron
Core | Standards
+
Wesley Walser
QUnit
+
Ralph Whitbeck
Developer Relations Lead
+
Trent Willis
QUnit Lead
+
Keith Wood
Developer Relations
+
Kristy Yeaton
Chassis
+
Jörn Zaefferer
jQuery UI Dev Lead | QUnit Lead | Globalize | Infrastructure
+
diff --git a/pages/upgrade-guide.md b/pages/upgrade-guide.md
index 7fd3cdd..9f235e7 100644
--- a/pages/upgrade-guide.md
+++ b/pages/upgrade-guide.md
@@ -3,4 +3,37 @@
"noHeadingLinks": true
}
-## [1.9 Upgrade Guide](/upgrade-guide/1.9/)
+## jQuery Upgrade Guides
+
+The jQuery upgrade guides provide information on all breaking changes and some notable changes in pinnacle versions of jQuery. Overall, jQuery has had very strong backwards compatibility throughout its history. However, these breaking changes were deemed necessary to address security concerns, fix bugs that could not be fixed without behavior changes, or to adapt to the introduction of modern APIs on the web. Most of the breaking changes listed should not apply to the majority of users, but these guides add some context and explanation for each change.
+
+### [4.0 Upgrade Guide](/upgrade-guide/4.0/)
+
+### [3.5 Upgrade Guide](/upgrade-guide/3.5/)
+
+### [3.0 Upgrade Guide](/upgrade-guide/3.0/)
+
+### [1.9 Upgrade Guide](/upgrade-guide/1.9/)
+
+### Upgrading jQuery
+
+The jQuery Team provides the [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate) to make upgrading jQuery as easy as possible. It is mainly meant as a development tool that generates warning messages in the browser console that can be used to identify and fix compatibility issues. It temporarily restores deprecated features and behaviors so that older code will still run on newer versions of jQuery while the compatibility issues are addressed.
+
+There are two versions of jQuery Migrate: [1.x](https://github.com/jquery/jquery-migrate/tree/1.x-stable) and [3.x](https://github.com/jquery/jquery-migrate) (there is no Migrate 2.x). Only one version should be used at a time, but you may need to use both in succession if upgrading from a jQuery version that predates jQuery 1.9.
+
+For example, if your current jQuery version is 1.4.4, first upgrade to jQuery 1.12.4 with jQuery Migrate 1.x and then upgrade to the latest jQuery with jQuery Migrate 3.x. If your current version is 1.9 or later, you can update straight to the latest jQuery with jQuery Migrate 3.x.
+
+#### Using jQuery Migrate
+
+First, add jQuery Migrate to your page *after* loading jQuery.
+
+```html
+
+
+```
+
+Then, test your website or application. As different jQuery APIs are used, jQuery Migrate will log messages to the console warning about any deprecations or breaking changes. Address each warning one at a time.
+
+Finally, when no more warnings are logged to the console and all breaking changes have been addressed, the jQuery Migrate can be removed and migration is complete!
+
+See the [jQuery Migrate README](https://github.com/jquery/jquery-migrate) for more details.
diff --git a/pages/upgrade-guide/1.9.md b/pages/upgrade-guide/1.9.md
index 1adcbae..9703268 100644
--- a/pages/upgrade-guide/1.9.md
+++ b/pages/upgrade-guide/1.9.md
@@ -5,7 +5,7 @@
## Overview
-jQuery 1.9 removes or modifies several APIs that behaved inconsistently or inefficiently in the past. The majority of these changes have been foreshadowed by their [deprecation](http://api.jquery.com/category/deprecated/) in previous versions of jQuery, particularly 1.7 and 1.8.
+jQuery 1.9 removes or modifies several APIs that behaved inconsistently or inefficiently in the past. The majority of these changes have been foreshadowed by their [deprecation](https://api.jquery.com/category/deprecated/) in previous versions of jQuery, particularly 1.7 and 1.8.
In making these changes, the team's goal was to fix behavior that makes jQuery inconsistent or hard to use, and in the process improve both file size and overall performance.
@@ -25,23 +25,23 @@ For more information see the [jQuery Migrate plugin](https://github.com/jquery/j
## Changes of Note in jQuery 1.9
-The list below does not represent all changes made for jQuery 1.9, just the changes that we anticipate may affect behavior in a way that could break existing code. For a complete and detailed list of changes, see the changelogs in the release announcements on the [jQuery blog](http://blog.jquery.com) or visit [bugs.jquery.com](http://bugs.jquery.com).
+The list below does not represent all changes made for jQuery 1.9, just the changes that we anticipate may affect behavior in a way that could break existing code. For a complete and detailed list of changes, see the changelogs in the release announcements on the [jQuery blog](https://blog.jquery.com) or visit [bugs.jquery.com](https://bugs.jquery.com).
-### .toggle(function, function, ... ) removed
+### .toggle( function, function, ... ) removed
This is the "click an element to run the specified functions" signature of `.toggle()`. It should not be confused with the "change the visibility of an element" of `.toggle()` which is not deprecated. The former is being removed to reduce confusion and improve the potential for modularity in the library. The jQuery Migrate plugin can be used to restore the functionality.
### jQuery.browser() removed
-The `jQuery.browser()` method has been deprecated since jQuery 1.3 and is removed in 1.9. If needed, it is available as part of the jQuery Migrate plugin. We recommend using feature detection with a library such as [Modernizr](http://modernizr.com).
+The `jQuery.browser()` method has been deprecated since jQuery 1.3 and is removed in 1.9. If needed, it is available as part of the jQuery Migrate plugin. We recommend using feature detection with a library such as [Modernizr](https://modernizr.com).
### .live() removed
-The `.live()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.on()` method instead. To exactly match `$("a.foo").live("click", fn)`, for example, you can write `$(document).on("click", "a.foo", fn)`. For more information, see the [.on() documentation](http://api.jquery.com/on/). In the meantime, the jQuery Migrate plugin can be used to restore the `.live()` functionality.
+The `.live()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.on()` method instead. To exactly match `$( "a.foo" ).live( "click", fn )`, for example, you can write `$( document ).on( "click", "a.foo", fn )`. For more information, see the [`.on()` documentation](https://api.jquery.com/on/). In the meantime, the jQuery Migrate plugin can be used to restore the `.live()` functionality.
### .die() removed
-The `.die()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.off()` method instead. To exactly match `$("a.foo").die("click")`, for example, you can write `$(document).off("click", "a.foo")`. For more information, see the [.off() documentation](http://api.jquery.com/off/). In the meantime, the jQuery Migrate plugin can be used to restore the `.die()` functionality.
+The `.die()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.off()` method instead. To exactly match `$( "a.foo" ).die( "click" )`, for example, you can write `$( document ).off( "click", "a.foo" )`. For more information, see the [`.off()` documentation](https://api.jquery.com/off/). In the meantime, the jQuery Migrate plugin can be used to restore the `.die()` functionality.
### jQuery.sub() removed
@@ -53,7 +53,7 @@ The `.add()` method is always supposed to return its results in document order.
### .addBack( selector ) replaces .andSelf()
-As of jQuery 1.8, the `.andSelf()` method was deprecated in favor of the `.addBack()` method, which we feel is a better name for what this method does--"add back" the previous set of results. The new method accepts an optional selector that can be used to filter the previous set before adding it to the current set. So, `$("section, aside").children("ul").addBack("aside")` results in a set that includes all `aside` nodes plus the `ul` children of both `section` and `aside` nodes, in document order. Although the `.andSelf()` method still works in 1.9, we recommend switching names as soon as possible. The jQuery Migrate plugin will warn about the use of `.andSelf()`.
+As of jQuery 1.8, the `.andSelf()` method was deprecated in favor of the `.addBack()` method, which we feel is a better name for what this method does--"add back" the previous set of results. The new method accepts an optional selector that can be used to filter the previous set before adding it to the current set. So, `$( "section, aside" ).children( "ul" ).addBack( "aside" )` results in a set that includes all `aside` nodes plus the `ul` children of both `section` and `aside` nodes, in document order. Although the `.andSelf()` method still works in 1.9, we recommend switching names as soon as possible. The jQuery Migrate plugin will warn about the use of `.andSelf()`.
### .after(), .before(), and .replaceWith() with disconnected nodes
@@ -61,36 +61,40 @@ Prior to 1.9, `.after()`, `.before()`, and `.replaceWith()` would attempt to add
### .appendTo, .insertBefore, .insertAfter, and .replaceAll
-As of 1.9, these methods _always_ return a new set, making them consistently usable with chaining and the `.end()` method. Prior to 1.9, they would return the old set only if there was a single target element. Note that these methods have always returned the aggregate set of all elements appended to the target elements. If no elements are selected by the target selector (e.g., `$(elements).appendTo("#not_found")`) the resulting set will be empty.
+As of 1.9, these methods _always_ return a new set, making them consistently usable with chaining and the `.end()` method. Prior to 1.9, they would return the old set only if there was a single target element. Note that these methods have always returned the aggregate set of all elements appended to the target elements. If no elements are selected by the target selector (e.g., `$( elements ).appendTo( "#not_found" )`) the resulting set will be empty.
### Ajax events should be attached to document
-As of jQuery 1.9, the global Ajax events (ajaxStart, ajaxStop, ajaxSend, ajaxComplete, ajaxError, and ajaxSuccess) are only triggered on the `document` element. Change the program to listen for the Ajax events on the document. For example, if the code currently looks like this:
-```javascript
-$("#status").ajaxStart(function(){ $(this).text("Ajax started"); });
+As of jQuery 1.9, the global Ajax events (`ajaxStart`, `ajaxStop`, `ajaxSend`, `ajaxComplete`, `ajaxError`, and `ajaxSuccess`) are only triggered on the `document` element. Change the program to listen for the Ajax events on the document. For example, if the code currently looks like this:
+```js
+$( "#status" ).on( "ajaxStart", function() {
+ $( this ).text( "Ajax started" );
+} );
```
Change it to this:
-```javascript
-$(document).ajaxStart(function(){ $("#status").text("Ajax started"); });
+```js
+$( document ).on( "ajaxStart", function() {
+ $( "#status" ).text( "Ajax started" );
+} );
```
### Checkbox/radio state in a .trigger()ed "click" event
-When the _user_ clicks on a checkbox or radio button, the event handler sees the node in the state it will be in if `event.preventDefault()` is not called on the node--in essence, its new state. So for example, if the user clicks on an unchecked checkbox, the event handler will see a _checked_ box. Before 1.9, a synthetic event triggered by either `.trigger("click")` or `.click()` would see the checkbox in the opposite state than that of a user action. This has been fixed in 1.9 to reflect the same checked state as a user-initiated action.
+When the _user_ clicks on a checkbox or radio button, the event handler sees the node in the state it will be in if `event.preventDefault()` is not called on the node--in essence, its new state. So for example, if the user clicks on an unchecked checkbox, the event handler will see a _checked_ box. Before 1.9, a synthetic event triggered by either `.trigger( "click" )` or `.click()` would see the checkbox in the opposite state than that of a user action. This has been fixed in 1.9 to reflect the same checked state as a user-initiated action.
### Order of triggered "focus" events
-When the user clicks or tabs into a form element to bring it into focus, the browser first fires a blur event for the previously focused element and then a focus event for the new element. Prior to 1.9, a trigger()ed focus event using either `.trigger("focus")` or `.focus()` would fire a focus event for the new element and then the blur event for the previous element before finally actually focusing the element. In 1.9 this behavior has been changed to reflect the same order as if the user had caused the focus change.
+When the user clicks or tabs into a form element to bring it into focus, the browser first fires a blur event for the previously focused element and then a focus event for the new element. Prior to 1.9, a trigger()ed focus event using either `.trigger( "focus" )` or `.focus()` would fire a focus event for the new element and then the blur event for the previous element before finally actually focusing the element. In 1.9 this behavior has been changed to reflect the same order as if the user had caused the focus change.
-With native DOM focus events, the browser only calls a focus event handler if the target element is not already focused and can also successfully be focused. jQuery has always ensured that a call to `.trigger("focus")` or `.focus()` consistently runs any attached event handlers, even if the element cannot be focused, and jQuery 1.9 continues to do that. This is different behavior than the DOM `.focus()` method, which will not call event handlers in many cases including where the element is already focused or the element is disabled.
+With native DOM focus events, the browser only calls a focus event handler if the target element is not already focused and can also successfully be focused. jQuery has always ensured that a call to `.trigger( "focus" )` or `.focus()` consistently runs any attached event handlers, even if the element cannot be focused, and jQuery 1.9 continues to do that. This is different behavior than the DOM `.focus()` method, which will not call event handlers in many cases including where the element is already focused or the element is disabled.
-Unfortunately, all versions of Internet Explorer (6 through 10) fire focus events asynchronously. When you `.trigger("focus")` in IE, jQuery won't "see" the async focus event which will occur later, so it fires one of its own to ensure that a focus event always occurs as described above. This causes two calls to the event handler. To avoid this double-call--but risk that the event handler is not called at all--use the DOM focus method directly, e.g., `$("selector").get(0).focus()`.
+Unfortunately, all versions of Internet Explorer (6 through 10) fire focus events asynchronously. When you `.trigger( "focus" )` in IE, jQuery won't "see" the async focus event which will occur later, so it fires one of its own to ensure that a focus event always occurs as described above. This causes two calls to the event handler. To avoid this double-call--but risk that the event handler is not called at all--use the DOM focus method directly, e.g., `$( "selector" ).get( 0 ).focus()`.
-### jQuery(htmlString) versus jQuery(selectorString)
+### jQuery( htmlString ) versus jQuery( selectorString )
Prior to 1.9, a string would be considered to be an HTML string if it had HTML tags anywhere within the string. This has the potential to cause inadvertent execution of code and reject valid selector strings. As of 1.9, a string is only considered to be HTML if it starts with a less-than ("`<`") character. The Migrate plugin can be used to restore the pre-1.9 behavior.
-If a string is known to be HTML but may start with arbitrary text that is not an HTML tag, pass it to `jQuery.parseHTML()` which will return an array of DOM nodes representing the markup. A jQuery collection can be created from this, for example: `$($.parseHTML(htmlString))`. This would be considered best practice when processing HTML templates for example. Simple uses of literal strings such as `$("
Testing
").appendTo("body")` are unaffected by this change.
+If a string is known to be HTML but may start with arbitrary text that is not an HTML tag, pass it to `jQuery.parseHTML()` which will return an array of DOM nodes representing the markup. A jQuery collection can be created from this, for example: `$( $.parseHTML( htmlString ) )`. This would be considered best practice when processing HTML templates for example. Simple uses of literal strings such as `$( "
Testing
" ).appendTo( "body" )` are unaffected by this change.
Bottom line: HTML strings passed to `jQuery()` that start with something other than a less-than character will be interpreted as a selector. Since the string usually cannot be interpreted as a selector, the most likely result will be an "invalid selector syntax" error thrown by the Sizzle selector engine. Use `jQuery.parseHTML()` to parse arbitrary HTML.
@@ -98,7 +102,7 @@ When the jQuery Migrate plugin is used, it will use the old rules for determinin
### Events not fired by the .data() method; names with periods
-The `.data()` method had an undocumented and incredibly non-performant way to monitor setting and getting of values that was removed in 1.9. This has affected the interpretation of data names that contain periods, in a good way. As of 1.9, a call to `.data("abc.def")` retrieves the data for the name "abc.def" _only_, and never just "abc". Note that the lower-level `jQuery.data()` method never supported events and so it has not changed. The jQuery Migrate plugin does _not_ restore the old behavior for this case.
+The `.data()` method had an undocumented and incredibly non-performant way to monitor setting and getting of values that was removed in 1.9. This has affected the interpretation of data names that contain periods, in a good way. As of 1.9, a call to `.data( "abc.def" )` retrieves the data for the name "abc.def" _only_, and never just "abc". Note that the lower-level `jQuery.data()` method never supported events and so it has not changed. The jQuery Migrate plugin does _not_ restore the old behavior for this case.
### Ordering of disconnected nodes within a jQuery set
@@ -120,18 +124,18 @@ jQuery 1.6 introduced the `.prop()` method for setting or getting *properties* o
For example, boolean attributes such as `checked` and `disabled` on a checkbox are affected by this change. The correct behavior of `"input[checked]"` is to select checkboxes that have a `checked` attribute, regardless of its string value, and regardless of their current state. In contrast, `"input:checked"` selects checkboxes that are *currently* checked as reflected in their boolean (`true` or `false`) `checked` property, which is affected when the user clicks the box for example. Versions prior to 1.9 sometimes do not select the correct nodes with these selectors.
-Here are some examples of correct and incorrect usage when setting `checked` on a checkbox; the same rules apply for `disabled`. Note that only the _property_ consistently reflects and updates the current state of the checkbox across all browsers; rarely will you need to set the attribute.
+Here are some examples of correct usage when setting `checked` on a checkbox; the same rules apply for `disabled`. Note that only the _property_ consistently reflects and updates the current state of the checkbox across all browsers; rarely will you need to set the attribute.
```js
// Correct if changing the attribute is desired
-$(elem).attr("checked", "checked");
+$( elem ).attr( "checked", "checked" );
// Correct for checking the checkbox
-$(elem).prop("checked", true);
+$( elem ).prop( "checked", true );
-// Correct if removing the attribute is desired
-$(elem).removeAttr("checked");
+// Correct if removing the attribute is desired (rare)
+$( elem ).removeAttr( "checked" );
// Correct for clearing the checkbox
-$(elem).prop("checked", false);
+$( elem ).prop( "checked", false );
```
The `value` property versus attribute on `input` elements is another example of this ambiguity. The attribute generally reflects the value that was read from the HTML markup; the property reflects the current value. Since the `.val()` method is the recommended jQuery way to get or set the values of form elements, this confusion usually does not affect users.
@@ -140,7 +144,7 @@ However, when a selector like `"input[value=abc]"` is used, it should always sel
The jQuery Migrate plugin restores the old attribute-vs-property rules.
-### $("input").attr("type", newValue) in oldIE
+### $( "input" ).attr( "type", newValue ) in oldIE
Prior to version 1.9, jQuery would throw an exception in all browsers for any attempt to set the `type` attribute on an input or button element. This was done to accommodate the lowest common denominator; IE 6/7/8 throw an error if you attempt to change the type of an input element. As of jQuery 1.9, we allow you to set the type of an element if the browser allows it. However, your own code will need to be aware that attempting to do this on oldIE will still throw an error. The jQuery Migrate plugin warns when you attempt to set the `type` attribute but does not throw a JavaScript error.
@@ -154,7 +158,7 @@ The remaining purpose of the deprecated `.selector` property on a jQuery object
### jQuery.attr()
-In 1.9 we have removed the undocumented signature jQuery.attr(elem, name, value, pass) using the pass argument. Any code that depended on this should be rewritten, but the jQuery Migrate plugin can provide backward-compatible behavior and will warn if this signature is used.
+In 1.9 we have removed the undocumented signature `jQuery.attr( elem, name, value, pass )` using the pass argument. Any code that depended on this should be rewritten, but the jQuery Migrate plugin can provide backward-compatible behavior and will warn if this signature is used.
### jQuery.ajax returning a JSON result of an empty string
@@ -162,11 +166,11 @@ Prior to 1.9, an ajax call that expected a return data type of JSON or JSONP wou
### jQuery.proxy() context
-New in 1.9, the function returned by calling jQuery.proxy with a falsy context will preserve its `this` object for the provided function. Previously, a falsy value for context would get translated into the global object (window) if null/undefined, or else wrapped in an object (e.g., new Boolean(false)).
+New in 1.9, the function returned by calling jQuery.proxy with a falsy context will preserve its `this` object for the provided function. Previously, a falsy value for context would get translated into the global object (window) if null/undefined, or else wrapped in an object (e.g., `new Boolean( false )`).
-### .data("events")
+### .data( "events" )
-Prior to 1.9, `.data("events")` could be used to retrieve jQuery's undocumented internal event data structure for an element if no other code had defined a data element with the name "events". This special case has been removed in 1.9. There is no public interface to retrieve this internal data structure, and it remains undocumented. However, the jQuery Migrate plugin restores this behavior for code that depends upon it.
+Prior to 1.9, `.data( "events" )` could be used to retrieve jQuery's undocumented internal event data structure for an element if no other code had defined a data element with the name "events". This special case has been removed in 1.9. There is no public interface to retrieve this internal data structure, and it remains undocumented. However, the jQuery Migrate plugin restores this behavior for code that depends upon it.
### Removed properties of the Event object
diff --git a/pages/upgrade-guide/3.0.md b/pages/upgrade-guide/3.0.md
new file mode 100644
index 0000000..a6a22e2
--- /dev/null
+++ b/pages/upgrade-guide/3.0.md
@@ -0,0 +1,524 @@
+
+
+## Overview
+
+With the major version of 3.0, the jQuery Core team has taken the opportunity to make changes to clean up the API and fix bugs that may prove to be breaking changes for some code. This includes the removal of previously deprecated public APIs, changes to or removal of undocumented APIs, and changes to the documented or undocumented behavior of existing APIs for specific inputs.
+
+## Browser Support
+
+As of jQuery 3.0, the following browsers are supported:
+
+* Internet Explorer: 9+
+* Chrome, Edge, Firefox, Safari: Current and Current - 1
+* Opera: Current
+* Safari Mobile iOS: 7+
+* Android 4.0+
+
+jQuery team policy is to only change browser support on major-version updates, so this list will apply until at least jQuery 4 arrives.
+
+## jQuery Migrate Plugin
+
+As with the major changes made in jQuery 1.9/2.0, we have created a new version of the [jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate/#README) to simplify migration of older code to version 3.0. We strongly recommend that you use this plugin as an upgrading tool, it will give specific advice about most of the major changes that may affect your code.
+
+[Version 3.0 of the jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate/#README) *does not* warn about or restore behaviors that were removed in previous major version changes such as jQuery 1.9/2.0. Use the following steps to upgrade from a version of jQuery older than 1.11.0 or 2.1.0 to this new version 3.0:
+
+1. Upgrade the version of jQuery on the page to the latest 1.x or 2.x version.
+2. Add the uncompressed [jQuery Migrate 1.x Plugin](https://github.com/jquery/jquery-migrate/tree/1.x-stable/#README) to the page.
+3. Optional but recommended, update any plugins in use since later versions are usually the most compatible with recent versions of jQuery.
+4. Test the page and resolve any warnings that appear on the console, using the [JQMIGRATE 1.x warning documentation](https://github.com/jquery/jquery-migrate/tree/1.x-stable/warnings.md) as a guide.
+5. Remove the jQuery Migrate 1.x plugin and ensure that the updated jQuery code on the page continues to work properly with only the latest jQuery 1.x/2.x in use.
+6. Upgrade the version of jQuery on the page to the latest 3.x version and add the uncompressed [jQuery Migrate 3.x plugin](https://github.com/jquery/jquery-migrate/#README) to the page.
+7. Test the page and resolve any warnings that appear on the console, using the [JQMIGRATE 3.x warning documentation](https://github.com/jquery/jquery-migrate/blob/master/warnings.md) as a guide. Report any bugs in third-party plugins to the plugin author.
+8. Remove the jQuery Migrate 3.x plugin and ensure that the page continues to work properly with only the latest jQuery 3.x in use.
+
+**Running both Migrate 1.x and Migrate 3.x simultaneously on the same page is not supported.**
+
+The uncompressed development version of the Migrate plugin includes console log output to warn when specific deprecated and/or removed features are being used. This makes it valuable as a migration debugging tool for finding and remediating issues in existing jQuery code and plugins.
+
+The compressed version of the Migrate plugin does not generate any warnings, although it does issue a solitary console message that it has been installed to simplify debugging. Migrate can be used on production sites when jQuery 3.0 or higher is desired but older incompatible jQuery code or plugins must also be used. Ideally this is only used as a short-term solution, since restoring old behavior may cause conflicts with new jQuery code that expects the new behavior.
+
+## Summary of Important Changes
+
+With a library as widely used as jQuery, it is often difficult for the team to know which changes may impact developers the most before a release occurs. Despite the length of this list, we believe that the majority are edge cases. Many jQuery projects should be able to run version 3.0 with only minor changes if any.
+
+Changes are listed by their component category, and prefixed with a description to help you understand its impact:
+
+* **Breaking change:** This change *may* affect existing code, since it changes the API surface in some way. Most of the time the impacts are only for specific edge cases as noted.
+* **Feature:** The change is an API addition and should not affect existing code in most cases. However, there is the possibility that new features can interact negatively with existing code.
+* **Deprecated:** This feature or API is still present in jQuery 3.0, but its use is discouraged. It may be removed in a future major-version update.
+
+Remember that the jQuery Migrate plugin described above can detect and warn about many of these changes so that they can be fixed in your code.
+
+For a complete and detailed list of all code changes, see the 3.0 milestone in the [jQuery Core issue tracker](https://github.com/jquery/jquery/issues?q=is%3Aissue+milestone%3A3.0.0) or the [version diff](https://github.com/jquery/jquery/compare/2.2.4...3.0.0).
+
+### Ajax
+#### Breaking change: Special-case Deferred methods removed from jQuery.ajax
+The `jqXHR` object returned from `jQuery.ajax()` is a jQuery `Deferred` and has historically had three extra methods with names matching the arguments object of `success`, `error`, and `complete`. This often confused people who did not realize that the returned object should be treated like a `Deferred`. As of jQuery 3.0 these methods have been removed. As replacements, use the `Deferred` standard methods of `done`, `fail`, and `always`, or use the new `then` and `catch` methods for Promises/A+ compliance.
+
+Note that this does not have any impact at all on the ajax callbacks of the same name passed through the `options` object, which continue to exist and are not deprecated. This only affects the jqXHR methods.
+
+https://github.com/jquery/jquery/issues/2084
+
+#### Breaking change: Cross-domain script requests must be declared
+
+When making a request via `jQuery.ajax()` or `jQuery.get()` for a script on a domain other than the one that hosts the document, you must now explicitly specify `dataType: "script"` in the options. This prevents the possibility of an attack where the remote site delivers non-script content but later decides to serve a script that has malicious intent. Since `jQuery.getScript()` explicitly sets `dataType: "script"` it is unaffected by this change.
+
+#### Breaking change: Hash in a URL is preserved in a `jQuery.ajax()` call
+
+The `jQuery.ajax()` method no longer strips off the hash in the URL if it is provided, and sends the full URL to the transport (xhr, script, jsonp, or custom transport). If the server at the other end of the connection cannot deal with a hash on a URL, strip it off before sending the request.
+
+https://github.com/jquery/jquery/issues/1732
+
+#### Feature: New signature for jQuery.get() AND jQuery.post()
+
+jQuery 3 adds a new signature for the `jQuery.get()` and the `jQuery.post()` functions by adding a `settings` parameter. It's an object that can possess many properties and its the same object that you can provide to [`jQuery.ajax()`](https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings).
+
+https://github.com/jquery/jquery/issues/1986
+
+
+### Attributes
+
+#### Breaking change: `.removeAttr()` no longer sets properties to false
+
+Prior to jQuery 3.0, using `.removeAttr()` on a boolean attribute such as `checked`, `selected`, or `readonly` would also set the corresponding named *property* to `false`. This behavior was required for ancient versions of Internet Explorer but is not correct for modern browsers because the attribute represents the initial value and the property represents the current (dynamic) value.
+
+It is almost always a mistake to use `.removeAttr( "checked" )` on a DOM element. The only time it might be useful is if the DOM is later going to be serialized back to an HTML string. In all other cases, `.prop( "checked", false )` should be used instead.
+
+https://github.com/jquery/jquery/issues/1759
+https://github.com/jquery/jquery/issues/2913
+
+#### Breaking change: select-multiple with nothing selected returns an empty array
+
+Before jQuery 3.0, calling `.val()` on a `