jQuery 3.6.3 Released: A Quick Selector Fix
Last week, we released jQuery 3.6.2. There were several changes in that release, but the most important one addressed an issue with some new selectors introduced in most browsers, like
:has(). We wanted to release jQuery 3.6.3 quickly because an issue was reported that revealed a problem with our original fix. More details on that below.
As usual, the release is available on our cdn and the npm package manager. Other third party CDNs will probably have it soon as well, but remember that we don’t control their release schedules and they will need some time. Here are the highlights for jQuery 3.6.3.
CSS.supports the right way
After the issue with
:has that was fixed in jQuery 3.6.2, we started using
CSS.supports( "selector(SELECTOR)") to determine whether a selector would be valid if passed directly to
false, jQuery would then fall back to its own selector engine (Sizzle). Apparently, our implementation had a bug. In
CSS.supports( "selector(SELECTOR)"), SELECTOR needed to be a
<complex-selector> and not a
<complex-selector-list>. For example:
CSS.supports("selector(div)"); // true
CSS.supports("selector(div, span)"); // false
This meant that all complex selector lists were passed through Sizzle instead of
querySelectorAll. That’s not necessarily a problem in most cases, but it does mean that some level 4 selectors that were supported in browsers but not in Sizzle, like
:valid, no longer worked if it was part of a selector list (e.g.
"input:valid, div"). It should be noted this currently only affects Firefox, but it will be true in all browsers as they roll out changes to
This has now been fixed in jQuery 3.6.3 and it is the only functional change in this release.
We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new 3.5 Upgrade Guide. If you haven’t yet upgraded to jQuery 3+, first have a look at the 3.0 Upgrade Guide.
If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided patches for previous jQuery versions.
You can get the files from the jQuery CDN, or link to them directly:
You can also get this release from npm:
npm install firstname.lastname@example.org
Sometimes you don’t need ajax, or you prefer to use one of the many standalone libraries that focus on ajax requests. And often it is simpler to use a combination of CSS and class manipulation for web animations. Along with the regular version of jQuery that includes the ajax and effects modules, we’ve released a “slim” version that excludes these modules. The size of jQuery is very rarely a load performance concern these days, but the slim build is about 6k gzipped bytes smaller than the regular version. These files are also available in the npm package and on the CDN:
These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at https://jquery.com/download/. Public CDNs receive their copies today, please give them a few days to post the files. If you’re anxious to get a quick start, use the files on our CDN until they have a chance to update.
Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including Michal Golebiowski-Owczarek and the whole jQuery team.
Full changelog: 3.6.3
- remove stale Insight package from custom builds (81d5bd17)
- Updating the 3.x-stable version to 3.6.3-pre. (2c5b47c4)