CINXE.COM
Official jQuery Blog | New Wave Javascript
<!doctype html> <html class="no-js" lang="en-US"> <head data-live-domain="blog.jquery.com"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Official jQuery Blog | New Wave Javascript</title> <meta name="author" content="jQuery Foundation - jquery.org"> <meta name="description" content="jQuery: The Write Less, Do More, JavaScript Library"> <meta name="viewport" content="width=device-width"> <link rel="shortcut icon" href="https://blog.jquery.com/wp-content/themes/jquery.com/i/favicon.ico"> <link rel="stylesheet" href="https://blog.jquery.com/wp-content/themes/jquery/css/base.css?v=1"> <link rel="stylesheet" href="https://blog.jquery.com/wp-content/themes/jquery.com/style.css"> <link rel="pingback" href="https://blog.jquery.com/xmlrpc.php" /> <script src="https://blog.jquery.com/wp-content/themes/jquery/js/modernizr.custom.2.6.2.min.js"></script> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script src="https://blog.jquery.com/wp-content/themes/jquery/js/plugins.js"></script> <script src="https://blog.jquery.com/wp-content/themes/jquery/js/main.js"></script> <script src="//use.typekit.net/wde1aof.js"></script> <script>try{Typekit.load();}catch(e){}</script> <meta name='robots' content='max-image-preview:large' /> <link rel="alternate" type="application/rss+xml" title="Official jQuery Blog » Feed" href="https://blog.jquery.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="Official jQuery Blog » Comments Feed" href="https://blog.jquery.com/comments/feed/" /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.jquery.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.2.6"}}; /*! This file is auto-generated */ !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){p.clearRect(0,0,i.width,i.height),p.fillText(e,0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(t,0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(p&&p.fillText)switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s("\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!s("\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!s("\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!s("\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(e=t.source||{}).concatemoji?c(e.concatemoji):e.wpemoji&&e.twemoji&&(c(e.twemoji),c(e.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://blog.jquery.com/wp-includes/css/dist/block-library/style.min.css?ver=6.2.6' type='text/css' media='all' /> <link rel='stylesheet' id='classic-theme-styles-css' href='https://blog.jquery.com/wp-includes/css/classic-themes.min.css?ver=6.2.6' type='text/css' media='all' /> <style id='global-styles-inline-css' type='text/css'> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--duotone--dark-grayscale: url('#wp-duotone-dark-grayscale');--wp--preset--duotone--grayscale: url('#wp-duotone-grayscale');--wp--preset--duotone--purple-yellow: url('#wp-duotone-purple-yellow');--wp--preset--duotone--blue-red: url('#wp-duotone-blue-red');--wp--preset--duotone--midnight: url('#wp-duotone-midnight');--wp--preset--duotone--magenta-yellow: url('#wp-duotone-magenta-yellow');--wp--preset--duotone--purple-green: url('#wp-duotone-purple-green');--wp--preset--duotone--blue-orange: url('#wp-duotone-blue-orange');--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;} :where(.wp-block-columns.is-layout-flex){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} </style> <link rel="https://api.w.org/" href="https://blog.jquery.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.jquery.com/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.jquery.com/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 6.2.6" /> <meta name="cdp-version" content="1.4.6" /> </head> <body class="jquery"> <header> <section id="global-nav"> <nav> <div class="constrain"> <ul class="projects"> <li class="project jquery"><a href="http://jquery.com/" title="jQuery">jQuery</a></li> <li class="project jquery-ui"><a href="http://jqueryui.com/" title="jQuery UI">jQuery UI</a></li> <li class="project jquery-mobile"><a href="http://jquerymobile.com/" title="jQuery Mobile">jQuery Mobile</a></li> <li class="project sizzlejs"><a href="http://sizzlejs.com/" title="Sizzle">Sizzle</a></li> <li class="project qunitjs"><a href="http://qunitjs.com/" title="QUnit">QUnit</a></li> </ul> <ul class="links"> <li><a href="http://plugins.jquery.com/">Plugins</a></li> <li class="dropdown"><a href="http://contribute.jquery.org/">Contribute</a> <ul> <li><a href="http://contribute.jquery.org/cla/">CLA</a></li> <li><a href="http://contribute.jquery.org/style-guide/">Style Guides</a></li> <li><a href="http://contribute.jquery.org/triage/">Bug Triage</a></li> <li><a href="http://contribute.jquery.org/code/">Code</a></li> <li><a href="http://contribute.jquery.org/documentation/">Documentation</a></li> <li><a href="http://contribute.jquery.org/web-sites/">Web Sites</a></li> </ul> </li> <li class="dropdown"><a href="http://events.jquery.org/">Events</a> <ul class="wide"> <li><a href="http://appendto.com/what-we-do/training/schedule/jquery-virtual-training-april-2014/">Apr 16-17 | jQuery Virtual Training</a></li> <li><a href="http://jqueryuk.com/?utm_source=jqueryorg&utm_medium=banner&utm_campaign=jqueryorgbanner">May 16 | jQuery UK</a></li> <li><a href="http://appendto.com/what-we-do/training/schedule/jquery-virtual-training-june-2014/">Jun 17-19 | jQuery Virtual Training</a></li> <li><a href="http://events.jquery.org/2014/chicago/">Sep 12-13 | jQuery Chicago</a></li> <li><a href="http://2014.cssdevconf.com/">Oct 13-15 | CSS Dev Conf 2014</a></li> </ul> </li> <li class="dropdown"><a href="https://jquery.org/support/">Support</a> <ul> <li><a href="http://learn.jquery.com/">Learning Center</a></li> <li><a href="http://try.jquery.com/">Try jQuery</a></li> <li><a href="http://irc.jquery.org/">IRC/Chat</a></li> <li><a href="http://forum.jquery.com/">Forums</a></li> <li><a href="http://stackoverflow.com/tags/jquery/info">Stack Overflow</a></li> <li><a href="https://jquery.org/support/">Commercial Support</a></li> </ul> </li> <li class="dropdown"><a href="https://jquery.org/">jQuery Foundation</a> <ul> <li><a href="https://jquery.org/join/">Join</a></li> <li><a href="https://jquery.org/members/">Members</a></li> <li><a href="https://jquery.org/team/">Team</a></li> <li><a href="http://brand.jquery.org/">Brand Guide</a></li> <li><a href="https://jquery.org/donate/">Donate</a></li> </ul> </li> </ul> </div> </nav> </section> </header> <div id="container"> <div id="logo-events" class="constrain clearfix"> <h2 class="logo"><a href="/" title="Official jQuery Blog">Official jQuery Blog</a></h2> <aside> <div id="broadcast"></div> </aside> </div> <nav id="main" class="constrain clearfix"> <div class="menu-top-container"> <ul id="menu-top" class="menu"> <li class="menu-item"><a href="http://jquery.com/download/">Download</a></li> <li class="menu-item"><a href="http://api.jquery.com/">API Documentation</a></li> <li class="menu-item"><a href="http://blog.jquery.com/">Blog</a></li> <li class="menu-item"><a href="http://plugins.jquery.com/">Plugins</a></li> <li class="menu-item"><a href="http://jquery.com/browser-support/">Browser Support</a></li> </ul> </div> <form method="get" class="searchform" action="https://blog.jquery.com/"> <button type="submit" class="icon-search"><span class="visuallyhidden">search</span></button> <label> <span class="visuallyhidden">Search Official jQuery Blog</span> <input type="text" name="s" value="" placeholder="Search"> </label> </form> </nav> <div id="content-wrapper" class="clearfix row"> <div class="content-right twelve columns listing"> <div id="content"> <article id="post-4831" class="post-4831 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2024/07/17/second-beta-of-jquery-4-0-0/" title="Permalink to Second Beta of jQuery 4.0.0" rel="bookmark">Second Beta of jQuery 4.0.0</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2024/07/17/second-beta-of-jquery-4-0-0/" title="9:03 am" rel="bookmark"><time class="entry-date" datetime="2024-07-17T09:03:14-05:00" pubdate>July 17, 2024</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>Last February, we <a href="https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/">released the first beta of jQuery 4.0.0</a>. We’re now ready to release a second, and we expect a release candidate to come soon™. This release comes with a <a href="https://github.com/jquery/jquery/pull/5418">major rewrite to jQuery’s testing infrastructure</a>, which removed all deprecated or under-supported dependencies. But the main change that warranted a second beta was a fix to the <a href="https://github.com/jquery/jquery/pull/5429">exports field for bundlers</a>. More on that and other changes below.</p> <p>Many of the breaking changes in jQuery 4.0.0 are ones the team has wanted to make for years, but couldn’t in a patch or minor release. We’ve trimmed legacy code (including removing support for IE before version 11), removed some previously-deprecated APIs, removed some internal-only parameters to public functions that were never documented, and dropped support for some “magic” behaviors that were overly complicated.</p> <p>We will publish a comprehensive upgrade guide before final release, to outline the removed code and how to migrate. The <a href="https://github.com/jquery/jquery-migrate">jQuery Migrate plugin</a> will also be ready to assist. For now, please try out this release and <a href="https://github.com/jquery/jquery/issues">let us know if you encounter any issues</a>.</p> <p>As usual, the release is available on <a href="https://jquery.com/download/">our CDN</a> and the npm package manager. Third party CDNs will not be hosting this beta release, but will host the 4.0.0 final release later. Here are some highlights for jQuery 4.0.0 beta.2.</p> <h2 class="wp-block-heading">CommonJS + ESM: Strange Bedfellows</h2> <p>There are many different ways to include jQuery in a project. Supporting all of them can be difficult, especially when the environment supports both CommonJS and ESM modules. We wanted to support all of the ways jQuery might be included, whether using a named export or the default export. Also, we wanted to ensure jQuery was only ever included once, even when jQuery was both <code>import</code>ed using ESM and <code>require</code>d using CommonJS in the same environment or bundle. We think we’ve worked out a solution that supports Node.js and bundlers like rollup, webpack, and parcel. More details can be found in the <a href="https://github.com/jquery/jquery/pull/5429">PR</a>. Also, we created a <a href="https://github.com/jquery/jquery/wiki/jQuery-4-exports-explainer">wiki page</a> to explain how the <code>exports</code> property in jQuery’s <code>package.json</code> will work in 4.0.</p> <h2 class="wp-block-heading">Boolean Attributes: To Be Or …</h2> <p>The HTML spec defines boolean attributes that often correlate with boolean properties. If the attribute is missing, it correlates with the <code>false</code> property value, if it’s present – the true property value. The only valid values for boolean content attributes are empty string or the full attribute name (e.g. <code>checked="checked"</code>).</p> <p>jQuery has historically tried to be helpful here and treated boolean attributes in a special way in the <code>.attr()</code> API:</p> <ol> <li>For the getter, as long as the attribute was present, it was returning the<br>attribute name lowercased, ignoring the value.</li> <li>For the setter, it was removing the attribute when <code>false</code> was passed;<br>otherwise, it was ignoring the passed value and set the attribute –<br>interestingly, in jQuery >=3 not lowercased anymore.</li> </ol> <p>The problem is the spec occasionally converts boolean attributes into ones with additional attribute values with special behavior – one such example is the new <a href="https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute"><code>"until-found"</code> value for the <code>hidden</code> attribute</a>. Our setter normalization meant passing those values was impossible with <code>.attr()</code> (<code>.prop()</code> was unaffected). Also, new boolean attributes were introduced occasionally and jQuery could not easily add them to the list without incurring breaking changes.</p> <p>This patch removes any special handling of boolean attributes – the getter returns the value as-is and the setter sets the provided value, with one exception. To maintain backwards compatibility, this patch makes the <code>false</code> boolean value trigger attribute removal for ALL non-ARIA attributes. For example, <code>.attr( "checked", false )</code> will continue to remove the <code>checked</code> attribute, which is the only way the corresponding property will be set to <code>false</code>. ARIA attributes are exempt from the rule since many of them recognize the string <code>"false"</code> as a valid value with semantics different than the attribute missing. To remove an ARIA attribute, use <code>.removeAttr()</code> or pass <code>null</code> as the value to <code>.attr()</code>.</p> <h2 class="wp-block-heading">Position of Elements In Tables</h2> <p>jQuery 4.0.0-beta.2 also fixes some inconsistent behavior when finding the position of elements within tables. The offset parent on which the position was based could change depending on whether the element’s <code>position</code> style was <code>static</code> or <code>relative</code>.</p> <pre class="wp-block-preformatted"><div id="container" style="position: relative;"> <table> <tr> <td> <span id="static"></span> <span id="relative" style="position: relative;"></span> </td> </tr> </table> </div></pre> <p>Previously, <code>$('#static').position()</code> was returning the position relative to the containing <code><td></code> element, while <code>$('#relative').position()</code> was returning the position relative to <code>#container</code>.</p> <p>Now, both elements return their position relative to <code>#container</code>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.2.js">https://code.jquery.com/jquery-4.0.0-beta.2.js</a></p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.2.min.js">https://code.jquery.com/jquery-4.0.0-beta.2.min.js</a></p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@4.0.0-beta.2</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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. Finally, all of jQuery’s supported browsers (except for IE11) now have support for native Promises across the board, so Deferreds and Callbacks are no longer needed in most cases. Along with the regular version of jQuery that includes everything, 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 8k gzipped bytes smaller than the regular version. These files are also available in the npm package and on the CDN:</p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.2.slim.js">https://code.jquery.com/jquery-4.0.0-beta.2.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.2.slim.min.js">https://code.jquery.com/jquery-4.0.0-beta.2.slim.min.js</a></p> <p>These updates are already available as the current versions on npm. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/mgol">Michał Gołębiowski-Owczarek</a>, <a href="https://github.com/xwxtwd">J.Son</a>, <a href="https://github.com/Minimaximize">Liam James</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">We’re on Mastodon!</h2> <p>jQuery has a Mastodon account! We now post releases and other updates to both X and Mastodon. Also, you may be interested in following some of our team members that have Mastodon accounts.</p> </div></div> <p>jQuery: <a href="https://social.lfx.dev/@jquery">https://social.lfx.dev/@jquery</a></p> <p>mgol: <a href="https://hachyderm.io/@mgol">https://hachyderm.io/@mgol</a></p> <p>timmywil: <a href="https://hachyderm.io/@timmywil">https://hachyderm.io/@timmywil</a></p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/4.0.0-beta...4.0.0-beta.2">4.0.0-beta.2</a></p> </div></div> <h2>Attributes</h2> <ul> <li>Make <code>.attr( name, false )</code> remove for all non-ARIA attrs (<a href="https://github.com/jquery/jquery/issues/5388">#5388</a>, <a href="https://github.com/jquery/jquery/commit/063831b6378d518f9870ec5c4f1e7d5d16e04f36">063831b6</a>)</li> </ul> <h2>Build</h2> <ul> <li>Bump the github-actions group with 2 updates (<a href="https://github.com/jquery/jquery/commit/3a98ef91dfa0b4897df7562f40bfd1715f5fc30e">3a98ef91</a>)</li> <li>upgrade dependencies; fix bundler tests on windows (<a href="https://github.com/jquery/jquery/commit/cb8ab6ccdb8a7b843301793d4b7138a5a3750d6b">cb8ab6cc</a>)</li> <li>improve specificity of eslint config; add ecma versions (<a href="https://github.com/jquery/jquery/commit/74970524e5e164c72ec0415267b1e057280c9455">74970524</a>)</li> <li>Bump the github-actions group with 2 updates (<a href="https://github.com/jquery/jquery/commit/46b9e4803ec3506e830ea6b49541ea29717ed460">46b9e480</a>)</li> <li>Group dependabot PRs updating GitHub Actions (<a href="https://github.com/jquery/jquery/commit/3cac1465b4b5539bb679a517fbb52e5419c1866e">3cac1465</a>)</li> <li>Bump actions/cache, actions/checkout & github/codeql-action (<a href="https://github.com/jquery/jquery/commit/df1df9503afad78bec3ba5217f9a9efce49fe634">df1df950</a>)</li> <li>Bump express from 4.18.3 to 4.19.2 (<a href="https://github.com/jquery/jquery/commit/691c0aeeded5dea1ca2a0c5474c7adfdb1dadffe">691c0aee</a>)</li> <li>make compare size cache readable for manual edits (<a href="https://github.com/jquery/jquery/commit/783c9d6958fd20a6a9a199aeecad605a59686992">783c9d69</a>)</li> <li>fix size comparison for slim files when the branch is dirty (<a href="https://github.com/jquery/jquery/commit/8a3a74c475f92148675af4ee3f77e3d1746e6e88">8a3a74c4</a>)</li> <li>migrate more uses of fs.promises; use node: protocol (<a href="https://github.com/jquery/jquery/commit/ae7f6139cc8e21a7116e8de30d26ca38426bde0b">ae7f6139</a>)</li> <li>Bump github/codeql-action from 3.24.0 to 3.24.6 (<a href="https://github.com/jquery/jquery/commit/ae67ace649fd2ac49eb74709c3d0a5952d0dc3bb">ae67ace6</a>)</li> <li>Bump actions/cache from 4.0.0 to 4.0.1 (<a href="https://github.com/jquery/jquery/commit/68f772e003ee0f39cf0f755070fb4e9ec9e90973">68f772e0</a>)</li> <li>drop support for Node 10 (<a href="https://github.com/jquery/jquery/commit/5aa7ed888ddf314fba3c4f8750b891cb6427c9c2">5aa7ed88</a>)</li> <li>add GitHub Actions workflow to update Filestash (<a href="https://github.com/jquery/jquery/commit/0293d3e30dd68bfe92be1d6d29f9b9200d1ae917">0293d3e3</a>)</li> <li>update jenkins script to only build (<a href="https://github.com/jquery/jquery/commit/c21c6f4ddf96a5928e03bdd2bf0da87899f2ec24">c21c6f4d</a>)</li> <li>Bump actions/cache & github/codeql-action (#5402) (<a href="https://github.com/jquery/jquery/commit/bf11739f6c6926bc9bc1b5a1460505d3b7ef8b01">bf11739f</a>)</li> </ul> <h2>CSS</h2> <ul> <li>Tests: Fix tests & support tests under CSS Zoom (<a href="https://github.com/jquery/jquery/issues/5489">#5489</a>, <a href="https://github.com/jquery/jquery/commit/071f6dba6bd1d8db3f36ce4694aab5ff437b9e36">071f6dba</a>)</li> </ul> <h2>Core</h2> <ul> <li>Fix the exports setup to make bundlers work with ESM & CommonJS (<a href="https://github.com/jquery/jquery/issues/5416">#5416</a>, <a href="https://github.com/jquery/jquery/commit/60f11b58bfeece6b6d0189d7d19b61a4e1e61139">60f11b58</a>)</li> </ul> <h2>Docs</h2> <ul> <li>Update remaining HTTP URLs to HTTPS (<a href="https://github.com/jquery/jquery/commit/7cdd8374234b77a3c70dd511a1b06066afb146bb">7cdd8374</a>)</li> </ul> <h2>Event</h2> <ul> <li>Increase robustness of an inner native event in leverageNative (<a href="https://github.com/jquery/jquery/issues/5459">#5459</a>, <a href="https://github.com/jquery/jquery/commit/527fb3dcf0dcde69302a741dfc61cbfa58e99eb0">527fb3dc</a>)</li> </ul> <h2>Offset</h2> <ul> <li>Increase search depth when finding the 'real' offset parent (<a href="https://github.com/jquery/jquery/commit/556eaf4a193287c306d163635cbb5f5c95a22a84">556eaf4a</a>)</li> </ul> <h2>Release</h2> <ul> <li>ensure builds have the proper version (<a href="https://github.com/jquery/jquery/commit/3e612aeeb3821c657989e67b43c9b715f5cd32e2">3e612aee</a>)</li> <li>set preReleaseBase in config file (<a href="https://github.com/jquery/jquery/commit/1fa8df5dbd5d84cf55882a38eb6e571abd0aa938">1fa8df5d</a>)</li> <li>fix running pre/post release scripts in windows (<a href="https://github.com/jquery/jquery/commit/5518b2da1816b379b573abc55ba92f02776a3486">5518b2da</a>)</li> <li>update AUTHORS.txt (<a href="https://github.com/jquery/jquery/commit/862e7a1882f3f737db7dde1b5ecda9766d61694a">862e7a18</a>)</li> <li>migrate release process to release-it (<a href="https://github.com/jquery/jquery-release/issues/114">jquery/jquery-release#114</a>, <a href="https://github.com/jquery/jquery/commit/2646a8b07fcc2cf7cf384724f622eb0c27f9166c">2646a8b0</a>)</li> <li>add factory files to release distribution (<a href="https://github.com/jquery/jquery/issues/5411">#5411</a>, <a href="https://github.com/jquery/jquery/commit/1a324b0792ba8d032b89dd8bf78bbf5caa535367">1a324b07</a>)</li> </ul> <h2>Tests</h2> <ul> <li>remove unnecessary scroll feature test (<a href="https://github.com/jquery/jquery/commit/ea31e4d57c05a072df98a08df6532b2afb679d30">ea31e4d5</a>)</li> <li>Align <code>:has</code> selector tests with <code>3.x-stable</code> (<a href="https://github.com/jquery/jquery/commit/f2d9fde5f34c83a098fa2074ed808311086d9d23">f2d9fde5</a>)</li> <li>revert concurrency group change (<a href="https://github.com/jquery/jquery/commit/fa73e2f1b25304c93006dd45b6cba24f663e2ae7">fa73e2f1</a>)</li> <li>include github ref in concurrency group (<a href="https://github.com/jquery/jquery/commit/5880e02707dcefc4ec527bd1c56f64b8b0eba391">5880e027</a>)</li> <li>Make the beforeunload event tests work regardless of extensions (<a href="https://github.com/jquery/jquery/commit/399a78ee9fc5802509df462a2851aef1b60b7fbc">399a78ee</a>)</li> <li>share queue/browser handling for all worker types (<a href="https://github.com/jquery/jquery/commit/284b082eb86602705519d6ca754c40f6d2f8fcc0">284b082e</a>)</li> <li>improve diffing for values of different types (<a href="https://github.com/jquery/jquery/commit/b9d333acef65a68d68b169b6acbbf96965414728">b9d333ac</a>)</li> <li>show any and all actual/expected values (<a href="https://github.com/jquery/jquery/commit/f80e78ef3e7ded1fc693465d02dfb07510ded0ab">f80e78ef</a>)</li> <li>add diffing to test reporter (<a href="https://github.com/jquery/jquery/commit/44fb7fa220e2dc2780203b128df2181853b3300f">44fb7fa2</a>)</li> <li>add actual and expected messages to test reporter (<a href="https://github.com/jquery/jquery/commit/1e84908baf13da63c33ee66c857e45c2f02eced7">1e84908b</a>)</li> <li>fix worker restarts for failed browser acknowledgements (<a href="https://github.com/jquery/jquery/commit/fedffe7448b9e2328b43641158335be18eff5f69">fedffe74</a>)</li> <li>add –hard-retries option to test runner (<a href="https://github.com/jquery/jquery/commit/822362e6efae90610d7289b46477c7fa22758141">822362e6</a>)</li> <li>fix cleanup in cases where server doesn't stop (<a href="https://github.com/jquery/jquery/commit/0754d5966400ff12e216031d68cb25ea314eac55">0754d596</a>)</li> <li>fix flakey message logs; ignore delete worker failures (<a href="https://github.com/jquery/jquery/commit/02d23478289e45af3d7f4673b9ffe84591c23472">02d23478</a>)</li> <li>reuse browser workers in BrowserStack tests (#5428) (<a href="https://github.com/jquery/jquery/commit/95a4c94b8131b737d8f160c582a4acfe2b65e0f8">95a4c94b</a>)</li> <li>Use allowlist instead of whitelist (<a href="https://github.com/jquery/jquery/commit/2b97b6bbcfc67c234b86d41451aac7cdd778e855">2b97b6bb</a>)</li> <li>migrate testing infrastructure to minimal dependencies (<a href="https://github.com/jquery/jquery/commit/dfc693ea25fe85e5f29da23752b0c7c8d285fbf0">dfc693ea</a>)</li> <li>Fix Karma tests on Node.js 20 (<a href="https://github.com/jquery/jquery/commit/d478a1c0226b7825a99718bf605ef9727ee4beca">d478a1c0</a>)</li> </ul> </div> </article> <article id="post-4816" class="post-4816 post type-post status-publish format-standard hentry category-jquery"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2024/04/17/upgrading-jquery-working-towards-a-healthy-web/" title="Permalink to Upgrading jQuery: Working Towards a Healthy Web" rel="bookmark">Upgrading jQuery: Working Towards a Healthy Web</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2024/04/17/upgrading-jquery-working-towards-a-healthy-web/" title="12:00 pm" rel="bookmark"><time class="entry-date" datetime="2024-04-17T12:00:00-05:00" pubdate>April 17, 2024</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <p>jQuery’s influence on the web will always be evident. When it was first introduced in 2006, jQuery became a fundamental tool for web developers almost immediately. It simplified JavaScript programming, making it easier to manipulate HTML documents, handle events, perform animations, and much more. Since then, it has played and continues to play a major role in the evolution of web standards and browser capabilities.</p> <p>With the rise of modern JavaScript frameworks, fewer developers may be choosing to use jQuery for new projects, but worldwide usage is still extremely high. After analyzing the results of a <a href="https://www.internetlivestats.com/total-number-of-websites/">survey conducted by IDC</a>, the OpenJS Foundation estimated that 90% of all websites use jQuery. And about a third of those use an outdated version.</p> <p>The jQuery Team and OpenJS Foundation are working to fix that as part of the Healthy Web checkup campaign. This guide will explain why it is important to keep your jQuery version up to date and walk you through the process of upgrading jQuery.</p> <h2 class="wp-block-heading">Why Is Upgrading jQuery Important for Security?</h2> <p><strong>Security Vulnerabilities</strong>: Like any software, jQuery may contain security vulnerabilities in its codebase. These vulnerabilities can range from Cross-Site Scripting (XSS) vulnerabilities to more severe issues like Remote Code Execution (RCE). As vulnerabilities are discovered, the jQuery team releases patches and updates to address them. By upgrading to the latest version of jQuery, you ensure that your application benefits from these security fixes, reducing the risk of exploitation by attackers.</p> <p><strong>Security Best Practices</strong>: Newer versions of jQuery often incorporate security best practices and enhancements to mitigate common security threats. These improvements may include stricter input validation, improved handling of user-generated content, and better protection against XSS attacks. By upgrading, you adopt these best practices and strengthen the security posture of your application.</p> <p><strong>Compliance Requirements</strong>: Many industries and regulatory frameworks require organizations to maintain up-to-date software and address known security vulnerabilities promptly. Failure to upgrade jQuery and address security issues could lead to non-compliance with these requirements.</p> <h2 class="wp-block-heading">What About Browser Support?</h2> <p>jQuery 1.x, 2.x, and 3.x each have a different list of supported browsers. However, given current browser market usage, the <a href="https://jquery.com/browser-support/">browsers that jQuery 3.x supports</a>, which includes IE 9+, should be sufficient in almost all cases. jQuery 4.x will still support IE11, even though <a href="https://blogs.windows.com/windowsexperience/2022/06/15/internet-explorer-11-has-retired-and-is-officially-out-of-support-what-you-need-to-know/">Microsoft announced it is officially out of support</a>.</p> <h2 class="wp-block-heading">How Do I Upgrade jQuery?</h2> <p>The jQuery Team provides the <a href="https://github.com/jquery/jquery-migrate">jQuery Migrate plugin</a> 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.</p> <p>There are two versions of jQuery Migrate: <a href="https://github.com/jquery/jquery-migrate/tree/1.x-stable">1.x</a> and <a href="https://github.com/jquery/jquery-migrate">3.x</a> (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.</p> <p>For example, if your current jQuery version is 1.4.4, first use jQuery Migrate 1.x to upgrade to jQuery 1.12.4 and then use jQuery Migrate 3.x to upgrade to the latest jQuery (3.7.1, as of this writing). If your current version is 2.2.4, you only need to use jQuery Migrate 3.x to upgrade to the latest jQuery.</p> <h2 class="wp-block-heading">Using jQuery Migrate</h2> <p>First, add jQuery Migrate to your page *after* loading jQuery.</p> <pre class="wp-block-preformatted"><script src="https://code.jquery.com/jquery-3.7.1.js"></script> <script src="https://code.jquery.com/jquery-migrate-3.4.1.js"></script></pre> <p>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.</p> <p>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!</p> <p>See the <a href="https://github.com/jquery/jquery-migrate">jQuery Migrate README</a> for more details.</p> <h2 class="wp-block-heading">jQuery Upgrade Guides</h2> <p>The <a href="https://jquery.com/upgrade-guide/">jQuery Upgrade Guides</a> can be helpful when you’re looking for more details on a breaking change, or you just want to see the full list of breaking changes for each version. There are upgrade guides for jQuery <a href="https://jquery.com/upgrade-guide/1.9/">1.9</a>, <a href="https://jquery.com/upgrade-guide/3.0/">3.0</a> and <a href="https://jquery.com/upgrade-guide/3.5/">3.5</a> that list all of the breaking changes that happened in those releases. Most of the breaking changes listed will probably not apply to your code, but these guides add some context and explanation for each change.</p> <h2 class="wp-block-heading">A Note on Future jQuery Versions</h2> <p>With <a href="https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/">jQuery 4.0 on the horizon</a>, you may wonder what the process will be for upgrading to jQuery 4.x. The answer is that it will be the same as upgrading to jQuery 3.x and it can still be done in one step. In other words, there will be no need to upgrade to jQuery 3.x before upgrading to jQuery 4.x. You will be able to upgrade straight from 1.9+ to jQuery 4.x. We will also have an upgrade guide ready for jQuery 4.0.</p> <h2 class="wp-block-heading">Conclusion</h2> <p>Upgrading jQuery is essential for maintaining the security, performance, and compatibility of your web applications. By following the steps outlined in this guide, you can safely upgrade to the latest version of jQuery and take advantage of its new features and improvements while ensuring that your web application remains protected against any discovered vulnerabilities. Remember to regularly check for updates and stay informed about new releases to keep your codebase up to date.</p> </div> </article> <article id="post-4594" class="post-4594 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/" title="Permalink to jQuery 4.0.0 BETA!" rel="bookmark">jQuery 4.0.0 BETA!</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/" title="11:43 am" rel="bookmark"><time class="entry-date" datetime="2024-02-06T11:43:14-05:00" pubdate>February 6, 2024</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>jQuery 4.0.0 has been in the works for a <em>long</em> time, but it is now ready for a beta release! There’s a lot to cover, and the team is excited to see it released. We’ve got bug fixes, performance improvements, and some breaking changes. We removed support for IE<11 after all! Still, we expect disruption to be minimal.</p> <p>Many of the breaking changes are ones the team has wanted to make for years, but couldn’t in a patch or minor release. We’ve trimmed legacy code, removed some previously-deprecated APIs, removed some internal-only parameters to public functions that were never documented, and dropped support for some “magic” behaviors that were overly complicated.</p> <p>We will publish a comprehensive upgrade guide before final release, to outline the removed code and how to migrate. The<a href="https://github.com/jquery/jquery-migrate"> jQuery Migrate plugin</a> will also be ready to assist. For now, please try out the beta release and <a href="https://github.com/jquery/jquery/issues">let us know if you encounter any issues</a>.</p> <p>As usual, the release is available on <a href="https://jquery.com/download/">our CDN</a> and the npm package manager. Third party CDNs will not be hosting this beta release, but will host the 4.0.0 final release later. Here are some highlights for jQuery 4.0.0 beta.</p> <h2 class="wp-block-heading">Goodbye IE<11</h2> <p>jQuery 4.0 drops support for IE 10 and older. Some may be asking why we didn’t remove support for IE 11. We plan to remove support in stages, and the next step <a href="https://github.com/jquery/jquery/pull/5077">will be released in jQuery 5.0</a>. For now, we’ll start by removing code specifically supporting IE versions older than 11, giving us a size reduction of <a href="https://github.com/jquery/jquery/pull/4347">867 gzipped bytes in one PR</a>!</p> <p>We also dropped support for other very old browsers, including Edge Legacy, iOS <11, Firefox <65, and Android Browser. No changes should be required on your end. If you need to support any of these browsers, simply stick with jQuery 3.x.</p> <h2 class="wp-block-heading">Deprecated APIs removed</h2> <p>These functions have been deprecated for several versions. It’s time to <a href="https://github.com/jquery/jquery/issues/4056">remove them</a> now that we’ve reached a major release. These functions were either always meant to be internal or ones that now have native equivalents in all supported browsers. The removed functions are:</p> <ul> <li><code><a href="https://github.com/jquery/jquery/pull/4055">jQuery.cssNumber</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.cssProps</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.isArray</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.parseJSON</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.nodeName</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.isFunction</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.isWindow</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.camelCase</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.type</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.now</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4364">jQuery.isNumeric</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/4461">jQuery.trim</a></code></li> <li><code><a href="https://github.com/jquery/jquery/pull/5017">jQuery.fx.interval</a></code></li> </ul> <h2 class="wp-block-heading"><code>push</code>, <code>sort</code>, and <code>splice</code> removed</h2> <p>The jQuery prototype has long had Array methods that did not behave like any other jQuery methods and were always meant for internal-use only. These methods are <code>push</code>, <code>sort</code>, and <code>splice</code>. We switched our uses of these methods to Array functions instead of the jQuery prototype. For example, <code>$elems.push( elem )</code> became <code>[].push.call( $elems, elem )</code>. We’re mentioning it here in case there are any plugins out there that may have relied on these methods.</p> </div></div> <h2 class="wp-block-heading"><code>focusin</code> and <code>focosout</code> event order</h2> <p>For a long time, browsers did not agree on the order of focus and blur events, which includes <code>focusin</code>, <code>focusout</code>, <code>focus</code>, and <code>blur</code>. Finally, the latest versions of all browsers that jQuery 4.0 supports have converged on a common event order. Unfortunately, it differs from the consistent order that jQuery had chosen years ago, which makes this a breaking change. At least everyone is the on the same page now!</p> <p>jQuery’s order for all four events in previous versions was:</p> <pre class="wp-block-preformatted">1. focusout 2. blur 3. focusin 4. focus</pre> <p>Starting with jQuery 4.0, we <a href="https://github.com/jquery/jquery/pull/4362">no longer override native behavior</a>. This means that all browsers except IE will follow the current W3C specification, which is:</p> <pre class="wp-block-preformatted">1. blur 2. focusout 3. focus 4. focusin</pre> <p>For those that are curious, the W3C specification previously defined a different order:</p> <pre class="wp-block-preformatted">1. focusout 2. focusin 3. blur 4. focus</pre> <p>But, few thought that intuitive and <a href="https://www.w3.org/TR/uievents/#events-focusevent-event-order">the spec</a> was <a href="https://github.com/w3c/uievents/issues/88">changed in 2023</a> to match what browsers have already implemented. Ironically, the only browser to ever follow the old spec was Internet Explorer.</p> <h2 class="wp-block-heading"><code>FormData</code> support</h2> <p><code>jQuery.ajax</code> has <a href="https://github.com/jquery/jquery/pull/5197">added support for binary data, including <code>FormData</code></a>. Previously, binary data was not a known data type and was converted to a string. That behavior could be disabled by disabling data conversion and handling the data manually, but we decided to make this work automatically. This is technically a breaking change, but should be closer to expected behavior.</p> <h2 class="wp-block-heading">Automatic JSONP promotion removed</h2> <p>Previously, <code>jQuery.ajax</code> with <code>dataType: "json"</code> with a provided callback would be converted to a JSONP request. Today, the preferred way to interact with a cross-domain backend is with <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS">CORS</a>, which works in all browsers that jQuery 4.0 supports. This should help avoid unexpected behavior in case a developer is unaware that code can be executed from a remote domain with JSONP.</p> <h2 class="wp-block-heading">jQuery source migrated to ES modules</h2> <p>It was a special day when the jQuery source on the <code>main</code> branch was migrated from <a href="https://requirejs.org/docs/whyamd.html">AMD</a> to <a href="https://github.com/jquery/jquery/pull/4541">ES modules</a>. The jQuery source has always been published with jQuery releases on npm and GitHub, but could not be imported directly as modules without <a href="https://requirejs.org/">RequireJS</a>, which was jQuery’s build tool of choice. We have since switched to <a href="https://rollupjs.org/introduction/">Rollup</a> for packaging jQuery and we do run all tests on the ES modules separately.</p> <h2 class="wp-block-heading">Trusted Types and CSP</h2> <p>jQuery 4.0 adds support for <a href="https://twitter.com/kkotowicz/status/1445713282128515074">Trusted Types</a>, ensuring that HTML wrapped in <a href="https://developer.mozilla.org/en-US/docs/Web/API/TrustedHTML">TrustedHTML</a> can be used as input to jQuery manipulation methods in a way that doesn’t violate the <code>require-trusted-types-for</code> Content Security Policy directive. </p> <p>Along with this, while some AJAX requests were already using <code><script></code> tags to maintain attributes such as <code>crossdomain</code>, we have <a href="https://github.com/jquery/jquery/pull/4763">since switched most asynchronous script requests to use <script> tags</a> to avoid any CSP errors caused by using inline scripts. There are still a few cases where XHR is used for asynchronous script requests, such as when the<code> "headers"</code> option is passed (use <code>scriptAttrs</code> instead!), but we now use a <code><script></code> tag whenever possible.</p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Updated slim build</h2> <p>The slim build has gotten even smaller in jQuery 4.0.0 with the removal of Deferreds and Callbacks (now below 20k bytes gzipped!). Deferreds have long-supported the <a href="https://promisesaplus.com/">Promises A+ standard</a>, so native Promises can be used instead in most cases and they are available in all of jQuery’s supported browsers except IE11. Deferreds do have some extra features that native Promises do not support, but most usage can be migrated to Promise methods. If you need to support IE11, it’s best to use the main build or add a polyfill for native Promises.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.js">https://code.jquery.com/jquery-4.0.0-beta.js</a></p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.min.js">https://code.jquery.com/jquery-4.0.0-beta.min.js</a></p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@4.0.0-beta</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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. Finally, all of jQuery’s supported browsers (except for IE11) now have support for native Promises across the board, so Deferreds and Callbacks are no longer needed in most cases. Along with the regular version of jQuery that includes everything, 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 8k gzipped bytes smaller than the regular version. These files are also available in the npm package and on the CDN:</p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.slim.js">https://code.jquery.com/jquery-4.0.0-beta.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-4.0.0-beta.slim.min.js">https://code.jquery.com/jquery-4.0.0-beta.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/sashashura">Alex</a>, <a href="https://github.com/aelafifi">Ahmed S. El-Afifi</a>, <a href="https://github.com/fecore1">fecore1</a>, <a href="https://github.com/fras2560">Dallas Fraser</a>, <a href="https://github.com/gibson042">Richard Gibson</a>, <a href="https://github.com/mgol">Michał Gołębiowski-Owczarek</a>, <a href="https://github.com/pgrimaud">Pierre Grimaud</a>, <a href="https://github.com/gabibguti">Gabriela Gutierrez</a>, <a href="https://github.com/vanillajonathan">Jonathan</a>, <a href="https://github.com/Necmttn">Necmettin Karakaya</a>, <a href="https://github.com/andersk">Anders Kaseorg</a>, <a href="https://github.com/wonseop">Wonseop Kim</a>, <a href="https://github.com/simon04">Simon Legner</a>, <a href="https://github.com/ShashankaNataraj">Shashanka Nataraj</a>, <a href="https://github.com/patocallaghan">Pat O’Callaghan</a>, <a href="https://github.com/coliff">Christian Oliff</a>, <a href="https://github.com/DimitriPapadopoulos">Dimitri Papadopoulos Orfanos</a>, <a href="https://github.com/wonhyoung05">Wonhyoung Park</a>, <a href="https://github.com/bubbatls">Bruno PIERRE</a>, <a href="https://github.com/renbaoshuo">Baoshuo Ren</a>, <a href="https://github.com/beatrizrezener">Beatriz Rezener</a>, <a href="https://github.com/skrobinson">Sean Robinson</a>, <a href="https://github.com/edg2s">Ed Sanders</a>, <a href="https://github.com/Krinkle">Timo Tijhof</a>, <a href="https://github.com/gaohuia">Tom</a>, <a href="https://github.com/wenz">Christian Wenz</a>, <a href="https://github.com/ygj6">ygj6</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">We’re on Mastodon!</h2> <p>jQuery now has its very own Mastodon account. We will be cross posting to both Twitter and Mastodon from now on. Also, you may be interested in following some of our team members that have Mastodon accounts.</p> </div></div> <p>jQuery: <a href="https://social.lfx.dev/@jquery">https://social.lfx.dev/@jquery</a></p> <p>mgol: <a href="https://hachyderm.io/@mgol">https://hachyderm.io/@mgol</a></p> <p>timmywil: <a href="https://hachyderm.io/@timmywil">https://hachyderm.io/@timmywil</a></p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.7.1...4.0.0-beta">4.0.0-beta</a></p> </div></div> <h3>Ajax</h3> <ul> <li>Don’t treat array data as binary (<a href="https://github.com/jquery/jquery/commit/992a1911d0b6195012edc25fd5a48810d4be64b5">992a1911</a>)</li> <li>Allow `processData: true` even for binary data (<a href="https://github.com/jquery/jquery/commit/ce264e0789116e37fe371503537a217c038dfae8">ce264e07</a>)</li> <li>Support binary data (including FormData) (<a href="https://github.com/jquery/jquery/commit/a7ed9a7b6364273b1b964fd2cf9691dec2cbec6b">a7ed9a7b</a>)</li> <li>Support `headers` for script transport even when cross-domain (<a href="https://github.com/jquery/jquery/issues/5142">#5142</a>, <a href="https://github.com/jquery/jquery/commit/6d1364431b63b0d3bbe1c5fd604131f9db453396">6d136443</a>)</li> <li>Support `null` as success functions in `jQuery.get` (<a href="https://github.com/jquery/jquery/issues/4989">#4989</a>, <a href="https://github.com/jquery/jquery/commit/74978b7e892537559850cda7332bdab8106e6354">74978b7e</a>)</li> <li>Don’t auto-execute scripts unless dataType provided (<a href="https://github.com/jquery/jquery/issues/4822">#4822</a>, <a href="https://github.com/jquery/jquery/commit/025da4dd343e6734f3d3c1b4785b1548498115d8">025da4dd</a>)</li> <li>Make responseJSON work for erroneous same-domain JSONP requests (<a href="https://github.com/jquery/jquery/commit/68b4ec59c8f290d680e9db4bc980655660817dd1">68b4ec59</a>)</li> <li>Execute JSONP error script responses (<a href="https://github.com/jquery/jquery/issues/4771">#4771</a>, <a href="https://github.com/jquery/jquery/commit/a1e619b03a557b47c3e26a5e74af12b63a0d5e73">a1e619b0</a>)</li> <li>Avoid CSP errors in the script transport for async requests (<a href="https://github.com/jquery/jquery/issues/3969">#3969</a>, <a href="https://github.com/jquery/jquery/commit/07a8e4a177550025c1a08d7ac754839733943f55">07a8e4a1</a>)</li> <li>Drop the json to jsonp auto-promotion logic (<a href="https://github.com/jquery/jquery/issues/1799">#1799</a>, <a href="https://github.com/jquery/jquery/issues/3376">#3376</a>, <a href="https://github.com/jquery/jquery/commit/e7b3bc488d01d584262e12a7c5c25f935d0d034b">e7b3bc48</a>)</li> <li>Overwrite s.contentType with content-type header value, if any (<a href="https://github.com/jquery/jquery/issues/4119">#4119</a>, <a href="https://github.com/jquery/jquery/commit/7fb90a6beaeffe16699800f73746748f6a5cc2de">7fb90a6b</a>)</li> <li>Deprecate AJAX event aliases, inline event/alias into deprecated (<a href="https://github.com/jquery/jquery/commit/23d53928f383b0e7440bf4b08b7524e6af232fad">23d53928</a>)</li> <li>Do not execute scripts for unsuccessful HTTP responses (<a href="https://github.com/jquery/jquery/issues/4250">#4250</a>, <a href="https://github.com/jquery/jquery/commit/50871a5a85cc802421b40cc67e2830601968affe">50871a5a</a>)</li> <li>Simplify jQuery.ajaxSettings.xhr (<a href="https://github.com/jquery/jquery/issues/1967">#1967</a>, <a href="https://github.com/jquery/jquery/commit/abdc89ac2e581392b800c0364e0f5f2b6a82cdc6">abdc89ac</a>)</li> </ul> <h3>Attributes</h3> <ul> <li>Shave off a couple of bytes (<a href="https://github.com/jquery/jquery/commit/b40a4807b604efbde51faf075d11e25441af1990">b40a4807</a>)</li> <li>Don’t stringify attributes in the setter (<a href="https://github.com/jquery/jquery/issues/4948">#4948</a>, <a href="https://github.com/jquery/jquery/commit/4250b628783d7bfa92ec6c5550c6e4b22fab6034">4250b628</a>)</li> <li>Drop the `toggleClass(boolean|undefined)` signature (<a href="https://github.com/jquery/jquery/issues/3388">#3388</a>, <a href="https://github.com/jquery/jquery/commit/a4421101fd6d9d7b0550210f8e8690641733dd9a">a4421101</a>)</li> <li>Refactor val(): don’t strip carriage return, isolate IE workarounds (<a href="https://github.com/jquery/jquery/commit/ff2819911da6cbbed5ee42c35d695240f06e65e3">ff281991</a>)</li> <li>Don’t set the type attr hook at all outside of IE (<a href="https://github.com/jquery/jquery/commit/9e66fe9acf0ef27681f5a21149fc61678f791641">9e66fe9a</a>)</li> </ul> <h3>build</h3> <ul> <li>set up periodic code scanning analysis (<a href="https://github.com/jquery/jquery/commit/39c5778c649ad387dac834832799c0087b11d5fe">39c5778c</a>)</li> </ul> <h3>Build</h3> <ul> <li>migrate grunt authors to a custom script (<a href="https://github.com/jquery/jquery/commit/af79c99939628255f46f30bced000eba9aa6711f">af79c999</a>)</li> <li>Bump follow-redirects from 1.15.1 to 1.15.4 (<a href="https://github.com/jquery/jquery/commit/56139394705022e4f6756440030ad6f3bf35f5a6">56139394</a>)</li> <li>Bump actions/setup-node and github/codeql-action (<a href="https://github.com/jquery/jquery/commit/99151d7ab0923aa3aeeb1b957a9063e4e20d31ae">99151d7a</a>)</li> <li>Reformat GitHub workflow Yaml files (<a href="https://github.com/jquery/jquery/commit/c98597eaf5e144ee5e549cb41984687cd1033068">c98597ea</a>)</li> <li>Bump @babel/traverse & multiple actions (<a href="https://github.com/jquery/jquery/commit/fb0cc272916dc909552a1b7bc1a39295e564d3a8">fb0cc272</a>)</li> <li>Don’t run CI push workflows for dependabot branches (<a href="https://github.com/jquery/jquery/commit/635cb152e7daac658223455aaab2f81204b5b215">635cb152</a>)</li> <li>Update ESLint-related packages, fix linting errors (<a href="https://github.com/jquery/jquery/commit/f47c6a83370675af0eff227d0266b40f9f45514a">f47c6a83</a>)</li> <li>Run pretest before test:* npm scripts (<a href="https://github.com/jquery/jquery/commit/1ad66aeb6d7d94f8e4c8e2286569722ca41f9868">1ad66aeb</a>)</li> <li>sort branches in compare_size; last run last (<a href="https://github.com/jquery/jquery/commit/a7fa303fda11ad298875676ffff78143cc49ce95">a7fa303f</a>)</li> <li>run pretest in jenkins script (<a href="https://github.com/jquery/jquery/commit/cb763072fee1eb9ec3d4037c50cb0d07836b7af6">cb763072</a>)</li> <li>fix inconsistent builds in Node 20 (<a href="https://github.com/jquery/jquery/commit/7ef9099d328e90d19bc40b64148747e854b13e20">7ef9099d</a>)</li> <li>add commit SHAs and last runs to comparisons (<a href="https://github.com/jquery/jquery/commit/09972bcc680e89e38f56d83043bb368eb7fbda91">09972bcc</a>)</li> <li>add new factory files to dist eslint (<a href="https://github.com/jquery/jquery/commit/792238410dc16ba0cc53c2740c47c314ea65d822">79223841</a>)</li> <li>Bump qs, socket.io-parser, socket.io & json5 (<a href="https://github.com/jquery/jquery/commit/b923047d29d37f2d5c96f8b33992f322bc7b7944">b923047d</a>)</li> <li>migrate most grunt tasks off of grunt (<a href="https://github.com/jquery/jquery/commit/2bdecf8b7bd10864e5337a4e24e39476c78cf23a">2bdecf8b</a>)</li> <li>Bump actions/checkout, actions/setup-node & github/codeql-action (<a href="https://github.com/jquery/jquery/commit/42e50f8c21fbfd08092ad81add4ac38982ef0841">42e50f8c</a>)</li> <li>Update mailmap entry for Krinkle (<a href="https://github.com/jquery/jquery/commit/699bcd396fa342c546905805a0cdfedd1959b7ce">699bcd39</a>)</li> <li>replace CRLF with LF during minify (<a href="https://github.com/jquery/jquery/commit/48cc402a917d6011c7d3e75f779f11ef91b474fb">48cc402a</a>)</li> <li>Add `exports` to package.json, export slim & esm builds (<a href="https://github.com/jquery/jquery/issues/4592">#4592</a>, <a href="https://github.com/jquery/jquery/commit/8be4c0e4f89d6c8f780e5937a0534921d8c7815e">8be4c0e4</a>)</li> <li>Switch form Terser to SWC for JS minification (#5286) (<a href="https://github.com/jquery/jquery/issues/5285">#5285</a>, <a href="https://github.com/jquery/jquery/commit/e24218758bb21bfdc296731d70f3d48ab786e5f5">e2421875</a>)</li> <li>Make sure `*.cjs` & `*.mjs` files use UNIX line endings as well (<a href="https://github.com/jquery/jquery/commit/198b41c8c2cd726b875615023b2b37b213040ad3">198b41c8</a>)</li> <li>switch preferred email for timmywil (<a href="https://github.com/jquery/jquery/commit/2b6b5e0a3ba3029ec3ad1525a178920765e3adf1">2b6b5e0a</a>)</li> <li>Bump github/codeql-action & actions/checkout (<a href="https://github.com/jquery/jquery/commit/4a13266efd262a92f05d86b71d715885de103e6d">4a13266e</a>)</li> <li>Drop individual AMD modules (<a href="https://github.com/jquery/jquery/commit/5701957b7223659c52a43f8c2c5465fdf2803df4">5701957b</a>)</li> <li>Reference GitHub Actions by commit SHAs (<a href="https://github.com/jquery/jquery/issues/5266">#5266</a>, <a href="https://github.com/jquery/jquery/commit/784b9ba6e403997161113aa56d1747baed4e0767">784b9ba6</a>)</li> <li>Switch the minifier from UglifyJS to Terser (<a href="https://github.com/jquery/jquery/commit/27303c6be09b8fc24c13454deae234e480cbf995">27303c6b</a>)</li> <li>Make the `eslint:dev` task not lint the `dist/` folder (<a href="https://github.com/jquery/jquery/commit/44906a83d28a81f0107f8418a430db7e040a776b">44906a83</a>)</li> <li>Test on Node.js 20, stop testing on Node.js 14 & 19 (<a href="https://github.com/jquery/jquery/commit/6616acff0a6c144c3eac3afae8578085bd325834">6616acff</a>)</li> <li>Only install Playwright dependencies when needed (<a href="https://github.com/jquery/jquery/commit/e77bd9d64fc696cadfe1f8c9ebb50d7609a97b07">e77bd9d6</a>)</li> <li>Bump actions/setup-node from 3.5.1 to 3.6.0 (<a href="https://github.com/jquery/jquery/commit/7e7bd062070b3eca8ee047136ea8575fbed5d70f">7e7bd062</a>)</li> <li>Run GitHub Action browser tests on Playwright WebKit (<a href="https://github.com/jquery/jquery/commit/b02a257f98688aa890e06a85672cd1a54c3ffa3a">b02a257f</a>)</li> <li>Migrate middleware-mockserver to modern JS (<a href="https://github.com/jquery/jquery/commit/ce90a48450ba40586a6567235abb8fd2df84da97">ce90a484</a>)</li> <li>remove stale Insight package from custom builds (<a href="https://github.com/jquery/jquery/commit/c66d4700dcf98efccb04061d575e242d28741223">c66d4700</a>)</li> <li>Limit permissions for GitHub workflows (<a href="https://github.com/jquery/jquery/commit/c909d6b1ff444e68618b6da13d9c21714f681925">c909d6b1</a>)</li> <li>Test on Node.js 18 & 19, stop testing on Node 12 (<a href="https://github.com/jquery/jquery/commit/f62d8e2159baf1eabf3b760b85b2dda56d569a09">f62d8e21</a>)</li> <li>Bump actions/setup-node from 3.5.0 to 3.5.1 (<a href="https://github.com/jquery/jquery/commit/0208224b5b76d54a39986f78aac97dbf1cccbe38">0208224b</a>)</li> <li>Update Grunt from 1.4.1 to 1.5.3 (<a href="https://github.com/jquery/jquery/commit/aa231cd21421503d319ad6068e7df0fb3baa7fea">aa231cd2</a>)</li> <li>Bump actions/setup-node from 3.4.1 to 3.5.0 (<a href="https://github.com/jquery/jquery/commit/25400750fb2e08b0a7e1a752a3ca0e9eaec16163">25400750</a>)</li> <li>Update GitHub Actions (<a href="https://github.com/jquery/jquery/commit/52f452b2e8881e5ec5c9e880e277c8ecf633e8dc">52f452b2</a>)</li> <li>Add dependabot.yml config (GitHub Actions) (<a href="https://github.com/jquery/jquery/commit/3f8bb2a46daf76f1427f49810d06a210ffbc7016">3f8bb2a4</a>)</li> <li>Test on Node 17, update Grunt & `karma-*` packages (<a href="https://github.com/jquery/jquery/commit/2525cffc42934c0d5c7aa085bc45dd6a8282e840">2525cffc</a>)</li> <li>Separate the install step from running tests in GitHub Actions (<a href="https://github.com/jquery/jquery/commit/eef972508c8be6cc3cd0039d34dc9fe16bac916c">eef97250</a>)</li> <li>remove travis.yml and travis mentions from core (#4983) (<a href="https://github.com/jquery/jquery/commit/5f4d449aa836f376eab2d2ca7585d5476d12f095">5f4d449a</a>)</li> <li>Migrate CI to GitHub Actions (<a href="https://github.com/jquery/jquery/commit/e23190e63cb121da79b92e6641a81a44dcea9252">e23190e6</a>)</li> <li>Update ESLint & eslint-plugin-import, fixing the build (<a href="https://github.com/jquery/jquery/commit/9735edd5cb7b5ef30bb8acc4d7596a1410a971cc">9735edd5</a>)</li> <li>Test on Node.js 16 instead of 15 (<a href="https://github.com/jquery/jquery/commit/0f623fdc8db128657716290cb7d57430e224c977">0f623fdc</a>)</li> <li>Take core-js-bundle from the external directory as well (<a href="https://github.com/jquery/jquery/commit/345cd22e5664655ed315958ed2056610607c12ef">345cd22e</a>)</li> <li>Restore the external directory (<a href="https://github.com/jquery/jquery/commit/a684e6ba836f7c553968d7d026ed7941e1a612d8">a684e6ba</a>)</li> <li>Rename master to main across the repository (<a href="https://github.com/jquery/jquery/commit/8ae477a432f0924cd4bd3bdeaef2c4c15e483a8f">8ae477a4</a>)</li> <li>Test on Node.js 15 (<a href="https://github.com/jquery/jquery/commit/6984d1747623dbc5e87fd6c261a5b6b1628c107c">6984d174</a>)</li> <li>Explicitly exclude the queue module from the slim build (<a href="https://github.com/jquery/jquery/commit/a503c691dc06c59acdafef6e54eca2613c6e4032">a503c691</a>)</li> <li>Make the import/no-unused-modules ESLint rule work in WebStorm (<a href="https://github.com/jquery/jquery/commit/8612018d4eb570b39532fca8344a187d2e95f98e">8612018d</a>)</li> <li>Append .eslintignore paths to grunt eslint paths (<a href="https://github.com/jquery/jquery/commit/a22b43bad41592ec61e5fa0fcd2b3a3d44f8bfd3">a22b43ba</a>)</li> <li>Use the US spelling of “favor” (<a href="https://github.com/jquery/jquery/commit/fa0058af426c4e482059214c29c29f004254d9a1">fa0058af</a>)</li> <li>Fix commitplease husky config (<a href="https://github.com/jquery/jquery/issues/4735">#4735</a>, <a href="https://github.com/jquery/jquery/commit/3a1b338a7a579a45543b031a003abdce4dc6ac67">3a1b338a</a>)</li> <li>Update dependencies (<a href="https://github.com/jquery/jquery/commit/b502866960b30863e56968bd35e720905ac58025">b5028669</a>)</li> <li>Event: Make sure all source modules’ exports are used (#4648) (<a href="https://github.com/jquery/jquery/commit/40c3abd0ab049449acab5f2e12c34b9cc3199482">40c3abd0</a>)</li> <li>Update eslint-config-jquery, fix linting violations (<a href="https://github.com/jquery/jquery/commit/ef4d6ca6c3a1b276fedc27b1f3a18823276f01a3">ef4d6ca6</a>)</li> <li>Followups after introducing ES modules compiled via Rollup (<a href="https://github.com/jquery/jquery/commit/55cd3a44368d529326b6d9b16ff7c0204fee5516">55cd3a44</a>)</li> <li>Correct code indentations based on jQuery Style Guide (<a href="https://github.com/jquery/jquery/commit/3d62d5704989f17d3a20ae7521d52e9c8c60b4ee">3d62d570</a>)</li> <li>Reduce the slim build header comment & jQuery.fn.jquery (<a href="https://github.com/jquery/jquery/commit/812b4a1a837c049b85efb73603105b4245cb0e5c">812b4a1a</a>)</li> <li>Move ESLint max-len disable-directive to dist/.eslintrc.json (<a href="https://github.com/jquery/jquery/commit/34296ec547f0ab6577e8c31815447990a9c01b31">34296ec5</a>)</li> <li>Test on Node.js 14, stop testing on Node.js 8 & 13 (<a href="https://github.com/jquery/jquery/commit/88eb22e0599d546f98f6145c53deb086e1d82857">88eb22e0</a>)</li> <li>Enable reportUnusedDisableDirectives in ESLint (<a href="https://github.com/jquery/jquery/commit/46f9810b73a7ad446d7c3711faf92f56b67df3c1">46f9810b</a>)</li> <li>Resolve Travis config warnings (<a href="https://github.com/jquery/jquery/commit/5b94a4f847fe2328b1b8f2340b11b6031f95d2d1">5b94a4f8</a>)</li> <li>Enable ESLint one-var rule for var declarations in browser code (<a href="https://github.com/jquery/jquery/commit/4a7fc8544e2020c75047456d11979e4e3a517fdf">4a7fc854</a>)</li> <li>Add Christian Oliff to .mailmap & AUTHORS.txt (<a href="https://github.com/jquery/jquery/commit/721744a9fab5b597febea64e466272eabfdb9463">721744a9</a>)</li> <li>Lint the minified jQuery file as well – a Gruntfile fix (<a href="https://github.com/jquery/jquery/issues/3075">#3075</a>, <a href="https://github.com/jquery/jquery/commit/338f1fc77483a1bc1456e1f4ba1db2049bb45b45">338f1fc7</a>)</li> <li>Lint the minified jQuery file as well (<a href="https://github.com/jquery/jquery/issues/3075">#3075</a>, <a href="https://github.com/jquery/jquery/commit/89a18de64cec73936507ea9feca24d029edea24f">89a18de6</a>)</li> <li>Add intuitive names to Travis jobs (<a href="https://github.com/jquery/jquery/commit/e1fab10911dfe3b93bf8bd5d276e30e6fc69f780">e1fab109</a>)</li> <li>Make dev mode work in Karma again, serve source files from disk (<a href="https://github.com/jquery/jquery/commit/437f389a24a6bef213d4df507909e7e69062300b">437f389a</a>)</li> <li>Tests: Fix custom build tests, verify on Travis (<a href="https://github.com/jquery/jquery/commit/0f780ba7cc5968d53bba386bdcb59b8d9410873b">0f780ba7</a>)</li> <li>Create a `grunt custom:slim` alias for the Slim build (#4578) (<a href="https://github.com/jquery/jquery/commit/9b9ed469b43e9fa6e2c752444470ae4c87d03d57">9b9ed469</a>)</li> <li>Make Karma work in ES modules mode (<a href="https://github.com/jquery/jquery/commit/341c6d1b5abe4829f59fbc32e93f6a6a1afb900f">341c6d1b</a>)</li> <li>Auto-convert sources to AMD (<a href="https://github.com/jquery/jquery/commit/f37c2e51f36c8f8bab3879064a90e86a685feafc">f37c2e51</a>)</li> <li>Fix the Windows build (<a href="https://github.com/jquery/jquery/issues/4548">#4548</a>, <a href="https://github.com/jquery/jquery/commit/9fd2fa5388dba5c71129a1d9e3bb8e4fe6e4eb0b">9fd2fa53</a>)</li> <li>Require extensions for ES6 imports, prevent import cycles (<a href="https://github.com/jquery/jquery/commit/44ac8c8529173711b66046ae5cfefa5bd4892461">44ac8c85</a>)</li> <li>Fix the import path to serialize.js from ajax.js (<a href="https://github.com/jquery/jquery/commit/075320149ae30a5c593c06b2fb015bdf033e0acf">07532014</a>)</li> <li>Run tests on Travis only on browsers defined in the config (<a href="https://github.com/jquery/jquery/commit/bcbcdd2b2c1bb7075f4f73dc89ca7d65db2a09ed">bcbcdd2b</a>)</li> <li>Run tests on Firefox ESR as well (<a href="https://github.com/jquery/jquery/commit/2d5ad6d23e0f57c733ce4556d3f2ee93ca99cadb">2d5ad6d2</a>)</li> <li>Run tests on Node.js 13 in addition to 8, 10 & 12 (<a href="https://github.com/jquery/jquery/commit/830976e690b5fffeac860e2fdd07986d087ce824">830976e6</a>)</li> <li>Run tests on Travis on FirefoxHeadless as well (<a href="https://github.com/jquery/jquery/commit/584835e68239ce55d1fc007b284e8ef4ed2817c2">584835e6</a>)</li> <li>Require strict mode in Node.js scripts via ESLint (<a href="https://github.com/jquery/jquery/commit/bbad821c399da92995a11b88d6684970479d4a9b">bbad821c</a>)</li> <li>Support jquery-release –dry-run flag (<a href="https://github.com/jquery/jquery/commit/d7d0b52bda74486f2351baa9d03ca4534de0d733">d7d0b52b</a>)</li> <li>Stop copying src/core.js to dist on release (<a href="https://github.com/jquery/jquery/issues/4489">#4489</a>, <a href="https://github.com/jquery/jquery/commit/9a4d980639dd804ad320685a25b8ff4572e3f595">9a4d9806</a>)</li> <li>Remove the external directory, read from node_modules directly (<a href="https://github.com/jquery/jquery/commit/d7e64190efc411e3973a79fd027bf1afe359f429">d7e64190</a>)</li> <li>ESLint: forbid unused function parameters (<a href="https://github.com/jquery/jquery/commit/438b1a3e8a52d3e4efd8aba45498477038849c97">438b1a3e</a>)</li> <li>Fix the regex parsing AMD var-modules (#4389) (<a href="https://github.com/jquery/jquery/commit/9ec09c3b4aa5182c2a8b8f51afb861b685a4003c">9ec09c3b</a>)</li> <li>Fix AMD dependencies in curCSS (<a href="https://github.com/jquery/jquery/commit/b220f6df88d34dd908f55d57417fcec377787e5c">b220f6df</a>)</li> <li>Test on Node.js 12, stop testing on Node.js 6 & 11 (<a href="https://github.com/jquery/jquery/commit/b8d4712825a26a7f24c2bdb5a71aa3abcd345dfd">b8d47128</a>)</li> <li>Fix unresolved jQuery reference in finalPropName (<a href="https://github.com/jquery/jquery/issues/4358">#4358</a>, <a href="https://github.com/jquery/jquery/commit/874030583c9b94603de467124420e6c7a1c3c8ac">87403058</a>)</li> <li>Update Sizzle from 2.3.3 to 2.3.4 (<a href="https://github.com/jquery/jquery/issues/1756">#1756</a>, <a href="https://github.com/jquery/jquery/issues/4170">#4170</a>, <a href="https://github.com/jquery/jquery/issues/4249">#4249</a>, <a href="https://github.com/jquery/jquery/commit/0b2c36adb4e2c048318659e4196e0925da10ead2">0b2c36ad</a>)</li> <li>Update the master version to 4.0.0-pre (<a href="https://github.com/jquery/jquery/commit/c4f2fa2fb33d6e52f7c8fad9f687ef970f442179">c4f2fa2f</a>)</li> <li>Update Sinon from 2.3.7 to 7.3.1, other updates (<a href="https://github.com/jquery/jquery/commit/fea7a2a328f475048b4450c5c02a60832fdcfc3c">fea7a2a3</a>)</li> </ul> <h3>Core</h3> <ul> <li>Add more info about named exports (<a href="https://github.com/jquery/jquery/commit/5f869590924b7dea6a16d176b18700939f4b5290">5f869590</a>)</li> <li>Simplify code post browser support reduction (<a href="https://github.com/jquery/jquery/commit/93ca49e6d1ac23fee33b3bc3b7f4d93dd1a25cb7">93ca49e6</a>)</li> <li>Move the factory to separate exports (<a href="https://github.com/jquery/jquery/commit/46f6e3da796ee9d28c7c1428793b72d66bcbb0b7">46f6e3da</a>)</li> <li>Use named exports in `src/` (<a href="https://github.com/jquery/jquery/issues/5262">#5262</a>, <a href="https://github.com/jquery/jquery/commit/f75daab09102a4dd5107deadb55d4a169f86254a">f75daab0</a>)</li> <li>Fix regression in jQuery.text() on HTMLDocument objects (<a href="https://github.com/jquery/jquery/issues/5264">#5264</a>, <a href="https://github.com/jquery/jquery/commit/a75d6b52fad212820358e8ada3154f2f634e699b">a75d6b52</a>)</li> <li>Selector: Move jQuery.contains from the selector to the core module (<a href="https://github.com/jquery/jquery/commit/024d87195ac46690023e2b0b308d4406a8a5a27e">024d8719</a>)</li> <li>Drop the root parameter of jQuery.fn.init (<a href="https://github.com/jquery/jquery/commit/d2436df36a4b2ef556907e734a90771f0dbdbcaf">d2436df3</a>)</li> <li>Don’t rely on splice being present on input (<a href="https://github.com/jquery/jquery/commit/9c6f64c7b51d50e334ef1183e2937ad77c0a68b0">9c6f64c7</a>)</li> <li>Manipulation: Add basic TrustedHTML support (<a href="https://github.com/jquery/jquery/issues/4409">#4409</a>, <a href="https://github.com/jquery/jquery/commit/de5398a6ad088dc006b46c6a870a2a053f4cd663">de5398a6</a>)</li> <li>Report browser errors in parseXML (<a href="https://github.com/jquery/jquery/issues/4784">#4784</a>, <a href="https://github.com/jquery/jquery/commit/8969732518470a7f8e654d5bc5be0b0076cb0b87">89697325</a>)</li> <li>Make jQuery.isXMLDoc accept falsy input (<a href="https://github.com/jquery/jquery/issues/4782">#4782</a>, <a href="https://github.com/jquery/jquery/commit/fd421097c56696e4c1c4a99c1aae44c59a722be4">fd421097</a>)</li> <li>Drop support for Edge Legacy (i.e. non-Chromium Microsoft Edge) (<a href="https://github.com/jquery/jquery/issues/4568">#4568</a>, <a href="https://github.com/jquery/jquery/commit/e35fb62db4fb46f031056bb53e393982c03972a1">e35fb62d</a>)</li> <li>Fire iframe script in its context, add doc param in globalEval (<a href="https://github.com/jquery/jquery/issues/4518">#4518</a>, <a href="https://github.com/jquery/jquery/commit/4592595b478be979141ce35c693dbc6b65647173">4592595b</a>)</li> <li>Exclude callbacks & deferred modules in the slim build as well (<a href="https://github.com/jquery/jquery/commit/fbc44f52fe76e1b601da76a1d7f8ef27884c06da">fbc44f52</a>)</li> <li>Migrate from AMD to ES modules 🎉 (<a href="https://github.com/jquery/jquery/commit/d0ce00cdfa680f1f0c38460bc51ea14079ae8b07">d0ce00cd</a>)</li> <li>Use Array.prototype.flat where supported (<a href="https://github.com/jquery/jquery/issues/4320">#4320</a>, <a href="https://github.com/jquery/jquery/commit/9df4f1de12728b44a4b0f91748f12421008d9079">9df4f1de</a>)</li> <li>Remove private copies of push, sort & splice from the jQuery prototype (<a href="https://github.com/jquery/jquery/commit/b59107f5d7451ac16a7c8755128719be6ec8bf12">b59107f5</a>)</li> <li>Implement .even() & .odd() to replace POS :even & :odd (<a href="https://github.com/jquery/jquery/commit/78420d427cf3734d9264405fcbe08b76be182a95">78420d42</a>)</li> <li>Deprecate jQuery.trim (<a href="https://github.com/jquery/jquery/issues/4363">#4363</a>, <a href="https://github.com/jquery/jquery/commit/5ea5946094784f68437ef26d463dfcfbbbaff1f6">5ea59460</a>)</li> <li>Remove IE-specific support tests, rely on document.documentMode (<a href="https://github.com/jquery/jquery/issues/4386">#4386</a>, <a href="https://github.com/jquery/jquery/commit/3527a3840585e6a359cd712591c9c57398357b9b">3527a384</a>)</li> <li>Drop support for IE <11, iOS <11, Firefox <65, Android Browser & PhantomJS (<a href="https://github.com/jquery/jquery/issues/3950">#3950</a>, <a href="https://github.com/jquery/jquery/issues/4299">#4299</a>, <a href="https://github.com/jquery/jquery/commit/cf84696fd1d7fe314a11492606529b5a658ee9e3">cf84696f</a>)</li> <li>Remove deprecated jQuery APIs (<a href="https://github.com/jquery/jquery/issues/4056">#4056</a>, <a href="https://github.com/jquery/jquery/commit/58f0c00bed695f934bb205c6115e5fe99dd5c27b">58f0c00b</a>)</li> </ul> <h3>CSS</h3> <ul> <li>Fix reliableTrDimensions support test for initially hidden iframes (<a href="https://github.com/jquery/jquery/commit/b1e66a5faaf46ffcbcc27c79a9a224aaf851a987">b1e66a5f</a>)</li> <li>Selector: Align with 3.x, remove the outer `selector.js` wrapper (<a href="https://github.com/jquery/jquery/commit/53cf7244da2a2040333335c36e435b1c12efdff9">53cf7244</a>)</li> <li>Make the reliableTrDimensions support test work with Bootstrap CSS (<a href="https://github.com/jquery/jquery/issues/5270">#5270</a>, <a href="https://github.com/jquery/jquery/commit/65b85031fb5688361c077bc04e641e4b502671e1">65b85031</a>)</li> <li>Make `offsetHeight( true )`, etc. include negative margins (<a href="https://github.com/jquery/jquery/issues/3982">#3982</a>, <a href="https://github.com/jquery/jquery/commit/bce13b72c1753e16cc0db53ebf0f0456bdcf6b48">bce13b72</a>)</li> <li>Return `undefined` for whitespace-only CSS variable values (#5120) (<a href="https://github.com/jquery/jquery/commit/7eb0019640a5856c42b451551eb7f995d913eba9">7eb00196</a>)</li> <li>Don’t trim whitespace of undefined custom property (<a href="https://github.com/jquery/jquery/issues/5105">#5105</a>, <a href="https://github.com/jquery/jquery/commit/ed306c0261ab63746040e5d58bb4477c3069a427">ed306c02</a>)</li> <li>Skip falsy values in `addClass( array )`, compress code (<a href="https://github.com/jquery/jquery/issues/4998">#4998</a>, <a href="https://github.com/jquery/jquery/commit/a338b407f2479f82df40635055effc163835183f">a338b407</a>)</li> <li>Justify use of rtrim on CSS property values (<a href="https://github.com/jquery/jquery/commit/655c0ed5e204b1f6427e09d615a49586a7bc84eb">655c0ed5</a>)</li> <li>Trim whitespace surrounding CSS Custom Properties values (<a href="https://github.com/jquery/jquery/issues/4926">#4926</a>, <a href="https://github.com/jquery/jquery/commit/efadfe991a5c287af561a9326bf1427d726c91c1">efadfe99</a>)</li> <li>Include `show`, `hide` & `toggle` methods in the jQuery slim build (<a href="https://github.com/jquery/jquery/commit/297d18dd13f7b810ea5a4afeefa4cb15d9e16e16">297d18dd</a>)</li> <li>Remove the opacity CSS hook (<a href="https://github.com/jquery/jquery/commit/865469f5e60f55feb28469bb0a7526dd22f04b4e">865469f5</a>)</li> <li>Workaround buggy getComputedStyle on table rows in IE/Edge (<a href="https://github.com/jquery/jquery/issues/4490">#4490</a>, <a href="https://github.com/jquery/jquery/commit/26415e081b318dbe1d46d2b7c30e05f14c339b75">26415e08</a>)</li> <li>Don’t automatically add “px” to properties with a few exceptions (<a href="https://github.com/jquery/jquery/issues/2795">#2795</a>, <a href="https://github.com/jquery/jquery/commit/00a9c2e5f4c855382435cec6b3908eb9bd5a53b7">00a9c2e5</a>)</li> </ul> <h3>Data</h3> <ul> <li>Refactor to reduce size (<a href="https://github.com/jquery/jquery/commit/805cdb43fd02c3a5783c06b5ec2c9519be0682ab">805cdb43</a>)</li> <li>Event:Manipulation: Prevent collisions with Object.prototype (<a href="https://github.com/jquery/jquery/issues/3256">#3256</a>, <a href="https://github.com/jquery/jquery/commit/9d76c0b163675505d1a901e5fe5249a2c55609bc">9d76c0b1</a>)</li> <li>Separate data & css/effects camelCase implementations (<a href="https://github.com/jquery/jquery/issues/3355">#3355</a>, <a href="https://github.com/jquery/jquery/commit/8fae21200e80647fec4389995c4879948d11ad66">8fae2120</a>)</li> </ul> <h3>Deferred</h3> <ul> <li>Rename `getStackHook` to `getErrorHook` (<a href="https://github.com/jquery/jquery/issues/5201">#5201</a>, <a href="https://github.com/jquery/jquery/commit/258ca1ec6a373f85f7849308c967b7e6a993e6e7">258ca1ec</a>)</li> <li>Respect source maps in jQuery.Deferred.exceptionHook (<a href="https://github.com/jquery/jquery/issues/3179">#3179</a>, <a href="https://github.com/jquery/jquery/commit/0b9c5037f707a0b8e0dbb11776b690ae7dde7123">0b9c5037</a>)</li> <li>Rename master to primary (<a href="https://github.com/jquery/jquery/commit/a32cf6324f8f2190e66a687e94be9687ebf840b7">a32cf632</a>)</li> </ul> <h3>Deprecated</h3> <ul> <li>Define `.hover()` using non-deprecated methods (<a href="https://github.com/jquery/jquery/commit/fd6ffc5eb2c12562f2656d2f33865448420252be">fd6ffc5e</a>)</li> <li>Remove jQuery.trim (<a href="https://github.com/jquery/jquery/commit/0b676ae12d20721e2df6f6f32f37f7302f8805bf">0b676ae1</a>)</li> <li>Fix AMD parameter order (<a href="https://github.com/jquery/jquery/commit/f810080e8e92278bb5288cba7cc0169481471780">f810080e</a>)</li> </ul> <h3>Dimensions</h3> <ul> <li>Add offset prop fallback to FF for unreliable TR dimensions (<a href="https://github.com/jquery/jquery/issues/4529">#4529</a>, <a href="https://github.com/jquery/jquery/commit/3bbbc11111840d6fd5160db13f2c1a9acb05c4c4">3bbbc111</a>)</li> </ul> <h3>Docs</h3> <ul> <li>Fix module links in the package README (<a href="https://github.com/jquery/jquery/commit/ace646f6e83e653f666ba715c200739f1cbdba52">ace646f6</a>)</li> <li>update watch task in CONTRIBUTING.md (<a href="https://github.com/jquery/jquery/commit/77d6ad7172db3ae11573df7b322d410b161eb43e">77d6ad71</a>)</li> <li>Fix typos found by codespell (<a href="https://github.com/jquery/jquery/commit/620870a1af5287d29c77ec6d5f973116b23793a7">620870a1</a>)</li> <li>remove stale gitter badge from readme (<a href="https://github.com/jquery/jquery/commit/67cb1af7740a956e150e8d93266c4e601f55e8a4">67cb1af7</a>)</li> <li>Remove the “Grunt build” section from the PR template (<a href="https://github.com/jquery/jquery/commit/988a56847de301ce18a653f84b07c5af432a269f">988a5684</a>)</li> <li>Remove stale badge from README (<a href="https://github.com/jquery/jquery/commit/bcd9c2bc3ddaa04f89f550681ca9c1ec5efc4328">bcd9c2bc</a>)</li> <li>Update the README of the published package (<a href="https://github.com/jquery/jquery/commit/edccabf10d37b57cbd4eeebc44f3acb67cb2739c">edccabf1</a>)</li> <li>Remove git.io from a GitHub Actions comment (<a href="https://github.com/jquery/jquery/commit/016872ffe03ab9107b1bc62fae674a4809c3b23f">016872ff</a>)</li> <li>Update webpack website in README (<a href="https://github.com/jquery/jquery/commit/01819bc3bcc44282e5bb9301c3478d837d1e5152">01819bc3</a>)</li> <li>add link to patchwelcome and help wanted issues (<a href="https://github.com/jquery/jquery/commit/924b7ce825962bfe4c16e02eb411c7f66ee75a55">924b7ce8</a>)</li> <li>add link to preview the new CLAs (<a href="https://github.com/jquery/jquery/commit/683ceb8ff067ac53a7cb464ba1ec3f88e353e3f5">683ceb8f</a>)</li> <li>Fix incorrect `trac-NUMBER` references (<a href="https://github.com/jquery/jquery/commit/eb9ceb2facbeff1c66a41824bd0ac0c56d0c5c62">eb9ceb2f</a>)</li> <li>remove expired links from old jquery source (#4997) (<a href="https://github.com/jquery/jquery/commit/ed066ac70270b4bb20b5717501d2d268ef144bd3">ed066ac7</a>)</li> <li>Remove links to Web Archive from source (<a href="https://github.com/jquery/jquery/issues/4981">#4981</a>, <a href="https://github.com/jquery/jquery/commit/e24f2dcf3f6bda1a672502e0233c732065cbbe89">e24f2dcf</a>)</li> <li>Replace `#NUMBER` Trac issue references with `trac-NUMBER` (<a href="https://github.com/jquery/jquery/commit/5d5ea015114092c157311c4948f7cc3d8c8e7f8a">5d5ea015</a>)</li> <li>Update the URL to the latest jQuery build in CONTRIBUTING.md (<a href="https://github.com/jquery/jquery/commit/9bdb16cd19097da67950a707baac3980bda873f3">9bdb16cd</a>)</li> <li>Remove the CLA checkbox in the pull request template (<a href="https://github.com/jquery/jquery/commit/e124893132d7a979d7987f978e968a1f889348b6">e1248931</a>)</li> <li>update irc to Libera and fix LAMP dead link (<a href="https://github.com/jquery/jquery/commit/175db73ec7938e774d9e93d3afdfb35a24466b47">175db73e</a>)</li> <li>Update Frequently Reported Issues in the GitHub issue template (<a href="https://github.com/jquery/jquery/commit/7a6fae6a7e51ae30a9f3177e8639fbf523ed0915">7a6fae6a</a>)</li> <li>Change JS Foundation mentions to OpenJS Foundation (<a href="https://github.com/jquery/jquery/commit/11611967adf2bd9ff4304132f917629ec1134049">11611967</a>)</li> <li>add SECURITY.md, show security email address (<a href="https://github.com/jquery/jquery/commit/2ffe54ca53b4ba2de2012f83c3faf262c1003af9">2ffe54ca</a>)</li> <li>Fix typos (<a href="https://github.com/jquery/jquery/commit/1a7332ce83cdee7d6cd9d45c2a4b83067f53f14b">1a7332ce</a>)</li> <li>Update the link to the jsdom repository (<a href="https://github.com/jquery/jquery/commit/a62309e01b3c76d2b73560ca666c454b7bbfcb77">a62309e0</a>)</li> <li>Use https for hyperlinks in README (<a href="https://github.com/jquery/jquery/commit/73415da25d964ee31ec1804d55f5af0199a1378e">73415da2</a>)</li> <li>Remove a mention of the event/alias.js module from README (<a href="https://github.com/jquery/jquery/commit/3edfa1bcdc50bca41ac58b2642b12f3feee03a3b">3edfa1bc</a>)</li> <li>Update links to EdgeHTML issues to go through Web Archive (<a href="https://github.com/jquery/jquery/commit/1dad1185e0b2ca2a13bf411558eda75fb2d4da88">1dad1185</a>)</li> <li>direct users to GitHub docs for cloning the repo (<a href="https://github.com/jquery/jquery/commit/f1c16de29689d2cfaf629f00d682148e99753509">f1c16de2</a>)</li> <li>Change OS X to macOS in README (<a href="https://github.com/jquery/jquery/commit/5a3e0664d261422f11a78faaf101d70c73b3a5a8">5a3e0664</a>)</li> <li>Update most URLs to HTTPS (<a href="https://github.com/jquery/jquery/commit/f09d92100ffff6208211b200ed0cdc39bfd17fc3">f09d9210</a>)</li> <li>Convert link to Homebrew from HTTP to HTTPS (<a href="https://github.com/jquery/jquery/commit/e0022f23144fd1dc6db86a5d8c18af47bc14f0f3">e0022f23</a>)</li> </ul> <h3>Effect</h3> <ul> <li>Fix a unnecessary conditional statement in .stop() (<a href="https://github.com/jquery/jquery/issues/4374">#4374</a>, <a href="https://github.com/jquery/jquery/commit/110802c7f22b677ef658963aa95ebdf5cb9c5573">110802c7</a>)</li> </ul> <h3>Effects</h3> <ul> <li>Remove jQuery.fx.interval (<a href="https://github.com/jquery/jquery/commit/6c2c7362fb18d3df7c2a7b13715c2763645acfcb">6c2c7362</a>)</li> </ul> <h3>Event</h3> <ul> <li>Avoid collisions between jQuery.event.special & Object.prototype (<a href="https://github.com/jquery/jquery/commit/bcaeb000b777c018ad5d18e01be5060caa8cb158">bcaeb000</a>)</li> <li>Simplify the check for saved data in leverageNative (<a href="https://github.com/jquery/jquery/commit/dfe212d5a1eed6b4a67d1cbd04ece09bbac33699">dfe212d5</a>)</li> <li>Make trigger(focus/blur/click) work with native handlers (<a href="https://github.com/jquery/jquery/issues/5015">#5015</a>, <a href="https://github.com/jquery/jquery/commit/6ad3651dbfea9e9bb56e608f72b4ef2f97bd4e70">6ad3651d</a>)</li> <li>Simulate focus/blur in IE via focusin/focusout (<a href="https://github.com/jquery/jquery/issues/4856">#4856</a>, <a href="https://github.com/jquery/jquery/issues/4859">#4859</a>, <a href="https://github.com/jquery/jquery/issues/4950">#4950</a>, <a href="https://github.com/jquery/jquery/commit/ce60d31893deab7d3da592b5173e90b5d50e7732">ce60d318</a>)</li> <li>Don’t break focus triggering after `.on(focus).off(focus)` (<a href="https://github.com/jquery/jquery/issues/4867">#4867</a>, <a href="https://github.com/jquery/jquery/commit/e539bac79e666bba95bba86d690b4e609dca2286">e539bac7</a>)</li> <li>Make focus re-triggering not focus the original element back (<a href="https://github.com/jquery/jquery/issues/4382">#4382</a>, <a href="https://github.com/jquery/jquery/commit/dbcffb396c2db61ff96edc4162602e850797d61f">dbcffb39</a>)</li> <li>Don’t crash if an element is removed on blur (<a href="https://github.com/jquery/jquery/issues/4417">#4417</a>, <a href="https://github.com/jquery/jquery/commit/5c2d08704e289dd2745bcb0557b35a9c0e6af4a4">5c2d0870</a>)</li> <li>Remove the event.which shim (<a href="https://github.com/jquery/jquery/issues/3235">#3235</a>, <a href="https://github.com/jquery/jquery/commit/1a5fff4c169dbaa2df72c656868bcf60ed4413d0">1a5fff4c</a>)</li> <li>remove jQuery.event.global (<a href="https://github.com/jquery/jquery/commit/18db87172cffbe48b92e30b70249e304863a70f9">18db8717</a>)</li> <li>Only attach events to objects that accept data – for real (<a href="https://github.com/jquery/jquery/issues/4397">#4397</a>, <a href="https://github.com/jquery/jquery/commit/d5c505e35d8c74ce8e9d99731a1a7eab0e0d911c">d5c505e3</a>)</li> <li>Stop shimming focusin & focusout events (<a href="https://github.com/jquery/jquery/issues/4300">#4300</a>, <a href="https://github.com/jquery/jquery/commit/8a741376937dfacf9f82b2b88f93b239fe267435">8a741376</a>)</li> <li>Prevent leverageNative from registering duplicate dummy handlers (<a href="https://github.com/jquery/jquery/commit/eb6c0a7c97b1b3cf00144de12d945c9c569f935c">eb6c0a7c</a>)</li> <li>Fix handling of multiple async focus events (<a href="https://github.com/jquery/jquery/issues/4350">#4350</a>, <a href="https://github.com/jquery/jquery/commit/ddfa83766478268391bc9da96683fc0d4973fcfe">ddfa8376</a>)</li> </ul> <h3>Manipulation</h3> <ul> <li>Generalize a test to support IE (<a href="https://github.com/jquery/jquery/commit/88690ebfc8b5ef8b1e444326c664b590ecc0b888">88690ebf</a>)</li> <li>Support $el.html(selfRemovingScript) (#5378) (<a href="https://github.com/jquery/jquery/issues/5377">#5377</a>, <a href="https://github.com/jquery/jquery/commit/937923d9ee8dfd19008447b5059cbd13ee5a23ac">937923d9</a>)</li> <li>Extract domManip to a separate file (<a href="https://github.com/jquery/jquery/commit/ee6e874075ba1fcd8f9e62cd1ee5c04f6518b6d6">ee6e8740</a>)</li> <li>Don’t remove HTML comments from scripts (<a href="https://github.com/jquery/jquery/issues/4904">#4904</a>, <a href="https://github.com/jquery/jquery/commit/2f8f39e457c32c454c50545b0fdaa1d7a4a2f8bd">2f8f39e4</a>)</li> <li>Respect script crossorigin attribute in DOM manipulation (<a href="https://github.com/jquery/jquery/issues/4542">#4542</a>, <a href="https://github.com/jquery/jquery/commit/15ae361485056b236a9484a185238f992806e1ff">15ae3614</a>)</li> <li>Avoid concatenating strings in buildFragment (<a href="https://github.com/jquery/jquery/commit/9c98e4e86eda857ee063bc48adbc1a11bb5506ee">9c98e4e8</a>)</li> <li>Make jQuery.htmlPrefilter an identity function (<a href="https://github.com/jquery/jquery/commit/90fed4b453a5becdb7f173d9e3c1492390a1441f">90fed4b4</a>)</li> <li>Selector: Use the nodeName util where possible to save size (<a href="https://github.com/jquery/jquery/commit/4504fc3d722dd029d861cb47aa65a5edc651c4d3">4504fc3d</a>)</li> </ul> <h3>Release</h3> <ul> <li>use buildDefaultFiles directly and pass version (<a href="https://github.com/jquery/jquery/commit/b507c8648f701acd1c48b3c38054ad38d76fd1ca">b507c864</a>)</li> <li>copy dist-module folder as well (<a href="https://github.com/jquery/jquery/commit/63767650b5b171b4671304fd2bb2f2890431929f">63767650</a>)</li> <li>only published versioned files to cdn (<a href="https://github.com/jquery/jquery/commit/3a0ca684eb21d64a13d7591ce1891b1990e0339c">3a0ca684</a>)</li> <li>remove scripts and dev deps from dist package.json (<a href="https://github.com/jquery/jquery/commit/7eac932da7177104546abef595adf4429eb829b3">7eac932d</a>)</li> <li>update build command in Release.generateArtifacts (<a href="https://github.com/jquery/jquery/commit/3b963a21662061e0f39ad90f146e73e2223c2b86">3b963a21</a>)</li> <li>add support for md5 sums in windows (<a href="https://github.com/jquery/jquery/commit/f088c36631df3d5dc98408debd147ea5d3618557">f088c366</a>)</li> <li>remove the need to install grunt globally (<a href="https://github.com/jquery/jquery/commit/b2bbaa36d4d37bd48f954ed3cdbd50d3461a523d">b2bbaa36</a>)</li> <li>upgrade release dependencies (<a href="https://github.com/jquery/jquery/commit/967af73203378db0cc3637adee85c442e246e05a">967af732</a>)</li> <li>Remove an unused chalk dependency (<a href="https://github.com/jquery/jquery/commit/bfb6897c558dfdccff7ac5fc377b08e806525be3">bfb6897c</a>)</li> <li>Use an in-repository dist README fixture (<a href="https://github.com/jquery/jquery/commit/358b769a00c3a09a8ec621b8dcb2d5e31b7da69a">358b769a</a>)</li> <li>Update AUTHORS.txt (<a href="https://github.com/jquery/jquery/commit/1b74660f730d34bf728094c33080ff406427f41e">1b74660f</a>)</li> <li>update AUTHORS.txt (<a href="https://github.com/jquery/jquery/commit/cf9fe0f6a104a0f527c7c3f441485c19e2b19c69">cf9fe0f6</a>)</li> </ul> <h3>Selector</h3> <ul> <li>Make `selector.js` module depend on `attributes/attr.js` (<a href="https://github.com/jquery/jquery/issues/5379">#5379</a>, <a href="https://github.com/jquery/jquery/commit/e06ff08849057cd099365bf43598c8952fe9956d">e06ff088</a>)</li> <li>Eliminate `selector.js` depenencies from various modules (<a href="https://github.com/jquery/jquery/commit/e8b7db4b0f1e1b8e08578641b30a92b955ccc4ec">e8b7db4b</a>)</li> <li>Re-expose jQuery.find.{tokenize,select,compile,setDocument} (<a href="https://github.com/jquery/jquery/issues/5259">#5259</a>, <a href="https://github.com/jquery/jquery/commit/338de3599039a3ba906214e656bcbe637430c37d">338de359</a>)</li> <li>Stop relying on CSS.supports( “selector(…)” ) (<a href="https://github.com/jquery/jquery/issues/5194">#5194</a>, <a href="https://github.com/jquery/jquery/commit/68aa2ef7571e2d9f91fad1aa9e5f956c04dc9ee9">68aa2ef7</a>)</li> <li>Backport jQuery selection context logic to selector-native (<a href="https://github.com/jquery/jquery/issues/5185">#5185</a>, <a href="https://github.com/jquery/jquery/commit/2e644e845051703775b35b358eec5d3608a9465f">2e644e84</a>)</li> <li>Make selector lists work with `qSA` again (<a href="https://github.com/jquery/jquery/issues/5177">#5177</a>, <a href="https://github.com/jquery/jquery/commit/09d988b774e7ff4acfb69c0cde2dab373559aaca">09d988b7</a>)</li> <li>Implement the `uniqueSort` chainable method (<a href="https://github.com/jquery/jquery/issues/5166">#5166</a>, <a href="https://github.com/jquery/jquery/commit/5266f23cf49c9329bddce4d4af6cb5fbbd1e0383">5266f23c</a>)</li> <li>Re-introduce selector-native.js (<a href="https://github.com/jquery/jquery/commit/4c1171f2ed62584211250df0af8302d34c04621a">4c1171f2</a>)</li> <li>Manipulation: Fix DOM manip within template contents (<a href="https://github.com/jquery/jquery/issues/5147">#5147</a>, <a href="https://github.com/jquery/jquery/commit/3299236c898136dc1aa57dc5148811203e931895">3299236c</a>)</li> <li>Drop support for legacy pseudos, test custom pseudos (<a href="https://github.com/jquery/jquery/commit/8c7da22caeae8c2c3f7e9869d5f47414669f106c">8c7da22c</a>)</li> <li>Use jQuery `:has` if `CSS.supports(selector(…))` non-compliant (<a href="https://github.com/jquery/jquery/issues/5098">#5098</a>, <a href="https://github.com/jquery/jquery/commit/d153c375e67f2c2dba82c2fb079c36b8d795e66a">d153c375</a>)</li> <li>Remove the “a:enabled” workaround for Chrome <=77 (<a href="https://github.com/jquery/jquery/commit/c1ee33aded44051b8f1288b59d2efdc68d0413cc">c1ee33ad</a>)</li> <li>Make empty attribute selectors work in IE again (<a href="https://github.com/jquery/jquery/issues/4435">#4435</a>, <a href="https://github.com/jquery/jquery/commit/05184cc448f4ed7715ddd6a5d724e167882415f1">05184cc4</a>)</li> <li>Use shallow document comparisons in uniqueSort (<a href="https://github.com/jquery/jquery/issues/4441">#4441</a>, <a href="https://github.com/jquery/jquery/commit/15750b0af270da07917b70457cf09bda97d3d935">15750b0a</a>)</li> <li>Add a test for throwing on post-comma invalid selectors (<a href="https://github.com/jquery/jquery/commit/6eee5f7f181f9ebf5aa428e96356667e3cf7ddbd">6eee5f7f</a>)</li> <li>Make selectors with leading combinators use qSA again (<a href="https://github.com/jquery/jquery/commit/ed66d5a22b37425abf5b63c361f91340de89c994">ed66d5a2</a>)</li> <li>Use shallow document comparisons to avoid IE/Edge crashes (<a href="https://github.com/jquery/jquery/issues/4441">#4441</a>, <a href="https://github.com/jquery/jquery/commit/aa6344baf87145ffc807a527d9c1fb03c96b1948">aa6344ba</a>)</li> <li>reduce size, simplify setDocument (<a href="https://github.com/jquery/jquery/commit/29a9544a4fb743491a42f827a6cf8627b7b99e0f">29a9544a</a>)</li> <li>Leverage the :scope pseudo-class where possible (<a href="https://github.com/jquery/jquery/issues/4453">#4453</a>, <a href="https://github.com/jquery/jquery/commit/df6a7f7f0f615149266b1a51064293b748b29900">df6a7f7f</a>)</li> <li>Bring back querySelectorAll shortcut usage (<a href="https://github.com/jquery/jquery/commit/cef4b73179b8d2a38cfd5e0730111cc80518311a">cef4b731</a>)</li> <li>Inline Sizzle into the selector module (<a href="https://github.com/jquery/jquery/commit/47835965bd100a3661d8299d8b769ceeb8b6ce48">47835965</a>)</li> <li>Port Sizzle tests to jQuery (<a href="https://github.com/jquery/jquery/commit/79b74e043a4ee737d44a95094ff1184e40bd5b16">79b74e04</a>)</li> </ul> <h3>Support</h3> <ul> <li>ensure display is set to block for the support div (<a href="https://github.com/jquery/jquery/issues/4832">#4832</a>, <a href="https://github.com/jquery/jquery/commit/09f254361f1fe8a563b8a90fe6a4d269f4b11514">09f25436</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Disable the “:lang respects escaped backslashes” test (<a href="https://github.com/jquery/jquery/issues/5271">#5271</a>, <a href="https://github.com/jquery/jquery/commit/62b9a2583460c2384f6de1d0a6aeaf05e51d523b">62b9a258</a>)</li> <li>Indicate Chrome 112 & Safari 16.4 pass the cssHas support test (<a href="https://github.com/jquery/jquery/commit/89ef81f86f8f371154e9fd3173be5fb57cb72d5e">89ef81f8</a>)</li> <li>Test AJAX deprecated event aliases properly (<a href="https://github.com/jquery/jquery/commit/cff2899885c314d32eea42e9eef6ead6e5da5c2f">cff28998</a>)</li> <li>Indicate Firefox 106+ passes the `cssSupportsSelector` test (<a href="https://github.com/jquery/jquery/commit/716130e094caf780100a39cfd4526adbd7673b12">716130e0</a>)</li> <li>Remove a workaround for a Firefox XML parsing issue (<a href="https://github.com/jquery/jquery/commit/e7ffe1f135dfa68ce3065b2bd319a29a57866dc6">e7ffe1f1</a>)</li> <li>Fix the link to QUnit CSS file (<a href="https://github.com/jquery/jquery/commit/8cf39b78e6c36b360dd81268a7f84fb4ca218e15">8cf39b78</a>)</li> <li>Exclude tests based on compilation flags, not API presence (<a href="https://github.com/jquery/jquery/issues/5069">#5069</a>, <a href="https://github.com/jquery/jquery/commit/fae5fee8b435cc20352d28b0a384b9784b1ad9ed">fae5fee8</a>)</li> <li>Workaround an XML parsing bug in Firefox (<a href="https://github.com/jquery/jquery/commit/af1cd6f218f699abc34b1582a910c0df00312aee">af1cd6f2</a>)</li> <li>lock colors version to 1.4.0 (<a href="https://github.com/jquery/jquery/commit/9603b3c899af354a4f538fa5b15f9dac3fcc0f55">9603b3c8</a>)</li> <li>Skip ETag AJAX tests on TestSwarm (<a href="https://github.com/jquery/jquery/commit/00c060d1619d472a2d8c5b104ed76fa3afc2ce97">00c060d1</a>)</li> <li>Allow statusText to be “success” in AJAX tests (<a href="https://github.com/jquery/jquery/commit/19ced963c63372eae5aca9e1a4baec80b78a2b8e">19ced963</a>)</li> <li>Make Karma browser timeout larger than the QUnit one (<a href="https://github.com/jquery/jquery/commit/4fd6912bfd8fffbfabc98a9b0789d28f10af0914">4fd6912b</a>)</li> <li>Don’t remove csp.log in the cspClean action of mock.php (<a href="https://github.com/jquery/jquery/commit/1019074f7b1df96ee9d6409ada3dc0562046f6c7">1019074f</a>)</li> <li>Load the TestSwarm listener via HTTPS (<a href="https://github.com/jquery/jquery/commit/d225639a8ea62863482bd20249077688f60235db">d225639a</a>)</li> <li>Switch background image from online file to local 1×1.jpg (<a href="https://github.com/jquery/jquery/commit/482f846203e82b1c2620f580e483bf41d11f9f49">482f8462</a>)</li> <li>Strip untypical callback parameter characters from mock.php (<a href="https://github.com/jquery/jquery/commit/a70274632dc19ff4a64d7bb7657a2cc647ff38b9">a7027463</a>)</li> <li>Make more tests run natively in Chrome & Firefox (<a href="https://github.com/jquery/jquery/commit/50e8e84621ff7a314fca253ce73f0519322d8a4d">50e8e846</a>)</li> <li>Fix tests for not auto-executing scripts without dataType (<a href="https://github.com/jquery/jquery/commit/d38528b17a846b7ca4513b41150a05436546292d">d38528b1</a>)</li> <li>Recognize callbacks with dots in the Node.js mock server (<a href="https://github.com/jquery/jquery/commit/df6858df2ed3fc5c424591a5e09b900eb4ce0417">df6858df</a>)</li> <li>Skip the “jQuery.ajax() on unload” test in Safari (<a href="https://github.com/jquery/jquery/commit/c18dc49699bc27481a4af36ed1a0ee1b19c6eb03">c18dc496</a>)</li> <li>Remove an unused local variable (<a href="https://github.com/jquery/jquery/commit/82b87f6f0e45ca4e717b4e3a4a20a592709a099f">82b87f6f</a>)</li> <li>Remove remaining obsolete jQuery.cache references (<a href="https://github.com/jquery/jquery/commit/d96111e18b42ae1bc7def72a8a0d156ea39e4d0e">d96111e1</a>)</li> <li>Workaround failures in recent XSS tests in iOS 8 – 12 (<a href="https://github.com/jquery/jquery/commit/11066a9e6ac183dd710d1bc7aa74a3f809757136">11066a9e</a>)</li> <li>Add tests for recently fixed manipulation XSS issues (<a href="https://github.com/jquery/jquery/commit/dc06d68bdc4c2562b5cc530f21e668a17d78ee2d">dc06d68b</a>)</li> <li>Use only one focusin/out handler per matching window & document (<a href="https://github.com/jquery/jquery/commit/9b7320435059e30af71d648ab34ac6c00c80f5ef">9b732043</a>)</li> <li>Fix flakiness in the “jQuery.ajax() – JSONP – Same Domain” test (<a href="https://github.com/jquery/jquery/commit/7b0864d0539bbfbb01d88d9bc95369580ffd99bc">7b0864d0</a>)</li> <li>Pass a number of necessary done() calls to assert.async() (<a href="https://github.com/jquery/jquery/commit/364476c3dc1231603ba61fc08068fa89fb095e1a">364476c3</a>)</li> <li>Remove obsolete jQuery data tests (<a href="https://github.com/jquery/jquery/commit/eb35be528fdea40faab4d89ac859d38dfd024271">eb35be52</a>)</li> <li>Skip a “width/height on a table row with phantom borders” test in Firefox (<a href="https://github.com/jquery/jquery/commit/a612733be0c68d337647a6fcc8f8e0cabc1fc36b">a612733b</a>)</li> <li>Don’t test synchronous XHR on unload in Chrome (<a href="https://github.com/jquery/jquery/commit/323575fb9bb330a852718d89e323f7ec79549100">323575fb</a>)</li> <li>Stop using jQuery.find in tests (<a href="https://github.com/jquery/jquery/commit/1d624c10b4a6b97ac254bcefffa91058556075d2">1d624c10</a>)</li> <li>Port changes from Sizzle (<a href="https://github.com/jquery/jquery/commit/ac5f7cd8e29ecc7cdf21c13199be5472375ffa0e">ac5f7cd8</a>)</li> <li>Fix a comment in testinit.js (<a href="https://github.com/jquery/jquery/commit/7bdf307b51e4d4a891b123a96d4899e31bfba024">7bdf307b</a>)</li> <li>update npo.js and include unminified source instead (<a href="https://github.com/jquery/jquery/commit/b334ce7735ae453bd5643b251f36c3cedce4b3de">b334ce77</a>)</li> <li>Restrict an event test fallback to TestSwarm (<a href="https://github.com/jquery/jquery/commit/bde53edcf4bd6c975d068eed4eb16c5ba09c1cff">bde53edc</a>)</li> <li>Fix the new focusin/focusout test in IE (<a href="https://github.com/jquery/jquery/commit/6f2fae7c410dcb5876814866a03fc819f0502290">6f2fae7c</a>)</li> <li>Fix the core-js polyfill inclusion method (<a href="https://github.com/jquery/jquery/commit/2e4b79ab8f7c43d36537a743c4c1a1a5b17e130e">2e4b79ab</a>)</li> </ul> <h3>Traversing</h3> <ul> <li>Fix `contents()` on `<object>`s with children in IE (<a href="https://github.com/jquery/jquery/commit/ccbd6b93424cbdbf86f07a86c2e55cbab497d7a3">ccbd6b93</a>)</li> <li>Fix `contents()` on `<object>`s with children (<a href="https://github.com/jquery/jquery/issues/4384">#4384</a>, <a href="https://github.com/jquery/jquery/commit/4d865d96aa5aae91823c50020b5c19da79566811">4d865d96</a>)</li> </ul> </div> </article> <article id="post-4572" class="post-4572 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2023/08/28/jquery-3-7-1-released-reliable-table-row-dimensions/" title="Permalink to jQuery 3.7.1 Released: Reliable Table Row Dimensions" rel="bookmark">jQuery 3.7.1 Released: Reliable Table Row Dimensions</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2023/08/28/jquery-3-7-1-released-reliable-table-row-dimensions/" title="8:40 am" rel="bookmark"><time class="entry-date" datetime="2023-08-28T08:40:07-05:00" pubdate>August 28, 2023</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>jQuery 3.7.1 has been released! This release fixes a regression from jQuery 3.6.0 that resulted in rounded dimensions for <code><tr /></code> elements in Chrome and Safari. Also, a (mostly) internal Sizzle method, <code>jQuery.find.tokenize</code> that was on the jQuery object was accidentally removed when we <a href="https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/">removed Sizzle in jQuery 3.7.0</a>. That method has been restored.</p> <p>As usual, the release is available on <a href="https://jquery.com/download/">our cdn</a> 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.7.1.</p> <h2 class="wp-block-heading">Support Test for Table Rows</h2> <p>jQuery 3.6.0 introduced a change to a support test to account for a sudden failure from Firefox, which started including table borders in computed dimensions for <code><tr /></code> elements. That <a href="https://github.com/w3c/csswg-drafts/issues/4444">may be actually be correct</a>, but Firefox is the only browser doing it. However, that new support test didn’t account for pages with <code>* { box-sizing: border-box; }</code> in CSS. And so, the support test failed on those pages in all browsers. The result was a fallback to use <code>outerWidth</code> and <code>outerHeight</code>, which unfortunately doesn’t return fractional values. The support test has now been fixed and previous behavior has been restored for Chrome and Safari, but Firefox and IE will continue to return integers.</p> </div></div> <h2 class="wp-block-heading">Re-exposing Methods from Sizzle</h2> <p>jQuery has <a href="https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/">inlined most of the code from Sizzle in jQuery 3.7.0</a> in preparation for larger changes coming to the jQuery selector engine in the future. For the most part, there were no functional changes, but we did accidentally privatize a method that used to be public. While <code>jQuery.find.tokenize</code> was not documented, some code relied on it being available. That method has now been restored.</p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>.</p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.7.1.js">https://code.jquery.com/jquery-3.7.1.js</a></p> <p><a href="https://code.jquery.com/jquery-3.7.1.min.js">https://code.jquery.com/jquery-3.7.1.min.js</a></p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.7.1</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.7.1.slim.js">https://code.jquery.com/jquery-3.7.1.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.7.1.slim.min.js">https://code.jquery.com/jquery-3.7.1.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/gabibguti">Gabriela Gutierrez</a>, <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a>, <a href="https://github.com/Krinkle">Timo Tijhof</a>, <a href="https://github.com/DimitriPapadopoulos">Dimitri Papadopoulos Orfanos</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">We’re on Mastodon!</h2> <p>jQuery now has its very own Mastodon account. We will be cross posting to both Twitter and Mastodon from now on. Also, you may be interested in following some of our team members that have Mastodon accounts.</p> </div></div> <p>jQuery: <a href="https://social.lfx.dev/@jquery">https://social.lfx.dev/@jquery</a></p> <p>mgol: <a href="https://hachyderm.io/@mgol">https://hachyderm.io/@mgol</a></p> <p>timmywil: <a href="https://hachyderm.io/@timmywil">https://hachyderm.io/@timmywil</a></p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.7.0...3.7.1">3.7.1</a></p> </div></div> <h3>Build</h3> <ul> <li>Generate the slim build on `grunt` & run `compare_size` on it (<a href="https://github.com/jquery/jquery/commit/763ade6dda092709b36d97491951bcae415d91d1">763ade6d</a>)</li> <li>Make sure `*.cjs` & `*.mjs` files use UNIX line endings as well (<a href="https://github.com/jquery/jquery/commit/3c18c1f33cfc69e1e1bd1410ab5176b2abc5fe3a">3c18c1f3</a>)</li> <li>switch preferred email for timmywil (<a href="https://github.com/jquery/jquery/commit/72ae577c948f3577894bc7430a264ec27d9c2ba3">72ae577c</a>)</li> <li>Build: Bump actions/checkout from 3.5.2 to 3.5.3 (<a href="https://github.com/jquery/jquery/commit/a370d7df4232c98f536bd97c049a0445d75c0f9e">a370d7df</a>)</li> <li>Reference GitHub Actions by commit SHAs (<a href="https://github.com/jquery/jquery/issues/5266">#5266</a>, <a href="https://github.com/jquery/jquery/commit/0ea85dadaa054a0d05b3b015456c8fc67ddfec4a">0ea85dad</a>)</li> <li>Test on Node.js 20, stop testing on Node.js 14 & 19 (<a href="https://github.com/jquery/jquery/commit/b473729d0e6086b00ad72aa1e9f8f1d8ff159669">b473729d</a>)</li> <li>Updating the 3.x-stable version to 3.7.1-pre. (<a href="https://github.com/jquery/jquery/commit/64460dac2ff6b9e4ed858928184cd119b6958b2b">64460dac</a>)</li> </ul> <h3>Core</h3> <ul> <li>Fix regression in jQuery.text() on HTMLDocument objects (<a href="https://github.com/jquery/jquery/issues/5264">#5264</a>, <a href="https://github.com/jquery/jquery/commit/44c56f87a31fbc1f43ac575cfd06a0df12073352">44c56f87</a>)</li> </ul> <h3>CSS</h3> <ul> <li>Make the reliableTrDimensions support test work with Bootstrap CSS (3.x version) (<a href="https://github.com/jquery/jquery/issues/5270">#5270</a>, <a href="https://github.com/jquery/jquery/commit/a288838c6f2ddd08c41e09b4672ad39a03822b04">a288838c</a>)</li> </ul> <h3>Deprecated</h3> <ul> <li>Define `.hover()` using non-deprecated methods (<a href="https://github.com/jquery/jquery/commit/7287894f1ac2aa25796008f1e39053969690c22f">7287894f</a>)</li> </ul> <h3>Docs</h3> <ul> <li>Fix typos found by codespell (<a href="https://github.com/jquery/jquery/commit/4a29888c759d0ca9a3ef7be90a2d7936cc48f5c8">4a29888c</a>)</li> <li>remove stale gitter badge from readme (<a href="https://github.com/jquery/jquery/commit/141518e9c0382f6b384ad842c6349e518850ed2d">141518e9</a>)</li> <li>Remove the “Grunt build” section from the PR template (<a href="https://github.com/jquery/jquery/commit/992a66538b535d24c9ba46c3a4492665943b40c7">992a6653</a>)</li> </ul> <h3>Release</h3> <ul> <li>revert change that broke release (<a href="https://github.com/jquery/jquery/commit/399b201bb3143a3952894cf3489b4848fc003967">399b201b</a>)</li> <li>update authors (<a href="https://github.com/jquery/jquery/commit/f85d521cdeeb3c6d3f4563a06dba8be793e26ef0">f85d521c</a>)</li> </ul> <h3>Selector</h3> <ul> <li>Only attach the unload handler in IE & Edge Legacy (<a href="https://github.com/jquery/jquery/issues/5281">#5281</a>, <a href="https://github.com/jquery/jquery/commit/87467a6f62b5fbd820ab387836e2a6fb186cbc1b">87467a6f</a>)</li> <li>Re-expose jQuery.find.tokenize (3.x version) (<a href="https://github.com/jquery/jquery/issues/5259">#5259</a>, <a href="https://github.com/jquery/jquery/commit/13a870b60e2042cf2c5df45589ec160e19168531">13a870b6</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Disable the “:lang respects escaped backslashes” test (<a href="https://github.com/jquery/jquery/issues/5271">#5271</a>, <a href="https://github.com/jquery/jquery/commit/5aa7d93acf61b165b12c4e4cc2440536a5fa94af">5aa7d93a</a>)</li> <li>Skip a new `.text()` test in IE 9 (<a href="https://github.com/jquery/jquery/commit/b84146ce17cef7ec2ae2725ba62485368744de6c">b84146ce</a>)</li> </ul> </div> </article> <article id="post-4531" class="post-4531 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/" title="Permalink to jQuery 3.7.0 Released: Staying in Order" rel="bookmark">jQuery 3.7.0 Released: Staying in Order</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/" title="1:38 pm" rel="bookmark"><time class="entry-date" datetime="2023-05-11T13:38:17-05:00" pubdate>May 11, 2023</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>jQuery 3.7.0 is now available! This release has it all: bug fixes, a new method, and a performance improvement! We even dropped our longtime selector engine: Sizzle. Or, I should say, we moved it into jQuery. jQuery no longer depends on Sizzle as a separate project, but has instead dropped its code directly into jQuery core. This helps us prepare for the major changes coming to selection in future jQuery versions. That doesn’t mean much right now, but jQuery did drop a few bytes because Sizzle supports even older browsers than jQuery. As an aside, we do plan on archiving Sizzle, but we’ll have more details on that in a future blog post.</p> <p>As usual, the release is available on <a href="https://jquery.com/download/">our cdn</a> 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.7.0.</p> <h2 class="wp-block-heading">New method: <code>.uniqueSort()</code></h2> <p>Some APIs, like <code>.prevAll()</code>, return elements in reverse order, which can result in some confusing behavior when used with wrapping methods. For example,</p> <pre class="wp-block-preformatted">$elem.prevAll().wrapAll("<p/>")</pre> <p>The above would wrap all of the elements as expected, but it would write those elements to the DOM in reverse order. To solve this in a way that prevented breaking existing code, we’ve documented that <code>.prevAll()</code> and similar methods return reverse-order collections, which is still desirable in many cases. But we’ve also added a new method to make things easier: a chainable <code>.uniqueSort()</code>, which does the equivalent of the existing but static <code>jQuery.uniqueSort()</code>.</p> <p>So, our previous example would become:</p> <pre class="wp-block-preformatted">$elem.prevAll().uniqueSort().wrapAll("<p/>")</pre> <p id="block-b68ae8c6-b30e-493b-915d-c8d63a2485c1">and the element order in the DOM would remain the same.</p> </div></div> <h2 class="wp-block-heading">Added some unitless CSS properties</h2> <p>jQuery 3.7.0 adds support for more CSS properties that should not automatically have “px” added to them when they are set without units. For instance, <code>.css('aspect-ratio', 5)</code> would result in the CSS <code>aspect-ratio: 5px;</code>. All in all, we added seven more properties, and we got a little help with our list from <a href="https://github.com/facebook/react/blob/afea1d0c536e0336735b0ea5c74f635527b65785/packages/react-dom-bindings/src/shared/CSSProperty.js/#L8-L58">React</a>. Thanks, React!</p> <p>It’s worth noting that jQuery 4.0 will change the way we handle unitless CSS properties. Rather than relying on a list of CSS properties to avoid adding <code>"px"</code>, we’ll instead have an list of properties to which we definitely want to add <code>"px"</code> when there are no units passed. That should be more future-proof.</p> <h2 class="wp-block-heading">Performance improvement in manipulation</h2> <p>jQuery 3.7.0 comes with a measurable performance improvement for some use cases when using manipulation methods like <code>.append()</code>. When we removed a support test for a browser we no longer support, it meant that checks against document changes no longer needed to run at all. Essentially, that resulted in a speedup anywhere between 0% and 100%. The most significant speedup will be for some rare cases where users frequently switch contexts between different documents, perhaps by running manipulations across multiple iframes.</p> <h2 class="wp-block-heading">Negative margins in <code>outerHeight(true)</code></h2> <p>Back in jQuery 3.3.0, we fixed an issue to include scroll gutters in the calculations for <code>.innerWidth()</code> and <code>.innerHeight()</code>. However, that fix didn’t take negative margins into account, which meant that <code>.outerWidth(true)</code> and <code>.outerHeight(true)</code> no longer respected negative margins. We’ve fixed that in 3.7.0 by separating the margin calculations from the scroll gutter adjustments.</p> <h2 class="wp-block-heading">Using different native focus events in IE</h2> <p>Focus and blur events are probably the most complicated events jQuery has to deal with across browsers. jQuery 3.4.0 introduced some minor regressions when it fixed an issue with the data passed through focus events. We were finally able to <a href="https://github.com/jquery/jquery/commit/59f7b55bf6dad71eee6434116566356d597f1d90">close all of those tickets</a> in jQuery 3.7.0!</p> <p>But, we need to point out a possible breaking change in IE. In all versions of IE, <code>focus</code> & <code>blur</code> events are fired asynchronously. In all other browsers, those events are fired synchronously. The asynchronous behavior in IE <a href="https://github.com/jquery/jquery/issues/4856">caused</a> <a href="https://github.com/jquery/jquery/issues/4859">issues</a>. The fix was to change which events we used natively. Fortunately, <code>focusin</code> & <code>focusout</code> are run synchronously in IE, and so we now simulate <code>focus</code> via <code>focusin</code> and <code>blur</code> via <code>focusout</code> in IE. That one change allowed us to rely on synchronous focus events in IE, which solved a lot of issues (see the changelog for the full list).</p> <p>If you’re curious, support for IE will be dropped in jQuery 5.0 and many of those changes are already in a <a href="https://github.com/jquery/jquery/pull/5077">PR</a>.</p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>.</p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.7.0.js">https://code.jquery.com/jquery-3.7.0.js</a></p> <p><a href="https://code.jquery.com/jquery-3.7.0.min.js">https://code.jquery.com/jquery-3.7.0.min.js</a></p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.7.0</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.7.0.slim.js">https://code.jquery.com/jquery-3.7.0.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.7.0.slim.min.js">https://code.jquery.com/jquery-3.7.0.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/fecore1">fecore1</a>, <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">We’re on Mastodon!</h2> <p>jQuery now has its very own Mastodon account. We will be cross posting to both Twitter and Mastodon from now on. Also, you may be interested in following some of our team members that have Mastodon accounts.</p> </div></div> <p>jQuery: <a href="https://social.lfx.dev/@jquery">https://social.lfx.dev/@jquery</a></p> <p>mgol: <a href="https://hachyderm.io/@mgol">https://hachyderm.io/@mgol</a></p> <p>timmywil: <a href="https://hachyderm.io/@timmywil">https://hachyderm.io/@timmywil</a></p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.6.4...3.7.0">3.7.0</a></p> </div></div> <h3>Build</h3> <ul> <li>Only install Playwright dependencies when needed (<a href="https://github.com/jquery/jquery/commit/212b6a4fce06b7435bbe9d8494e470881badacc6">212b6a4f</a>)</li> <li>Bump actions/setup-node from 3.5.1 to 3.6.0 (<a href="https://github.com/jquery/jquery/commit/582785e047ca1837ebffc8a87b2e51e03f727c0a">582785e0</a>)</li> <li>Run GitHub Action browser tests on Playwright WebKit (<a href="https://github.com/jquery/jquery/commit/da7057e9b0d48afdf5666597279f0a24e9828bc8">da7057e9</a>)</li> <li>Migrate middleware-mockserver to modern JS (<a href="https://github.com/jquery/jquery/commit/6b2abbdc46e9c4c37f515e838a7f820a4f2bb91a">6b2abbdc</a>)</li> <li>remove stale Insight package from custom builds (<a href="https://github.com/jquery/jquery/commit/37b04d5aba732ce7f03dc73e524ef9096a613a4d">37b04d5a</a>)</li> </ul> <h3>CSS</h3> <ul> <li>Make `offsetHeight( true )`, etc. include negative margins (<a href="https://github.com/jquery/jquery/issues/3982">#3982</a>, <a href="https://github.com/jquery/jquery/commit/7bb48a0290a20594ea2a5a7b5772e0410a67164c">7bb48a02</a>)</li> <li>Add missing jQuery.cssNumber entries (<a href="https://github.com/jquery/jquery/issues/5179">#5179</a>, <a href="https://github.com/jquery/jquery/commit/3eed28209ed02eca498095b597727bf1f98163aa">3eed2820</a>)</li> </ul> <h3>Deferred</h3> <ul> <li>Rename `getStackHook` to `getErrorHook` (3.x version) (<a href="https://github.com/jquery/jquery/issues/5201">#5201</a>, <a href="https://github.com/jquery/jquery/commit/cca7118658a074771fb3598145e78ca39b93c20d">cca71186</a>)</li> </ul> <h3>Docs</h3> <ul> <li>Remove stale badge from README (<a href="https://github.com/jquery/jquery/commit/e062f9cbc680998fe391e505a7e0e082a83d7150">e062f9cb</a>)</li> <li>update irc to Libera and fix LAMP dead link (<a href="https://github.com/jquery/jquery/commit/e0c670e66d409b6d7a230c7d4d119a7447091b63">e0c670e6</a>)</li> </ul> <h3>Event</h3> <ul> <li>Simplify the check for saved data in leverageNative (<a href="https://github.com/jquery/jquery/commit/9ab26aa508c6cca6afa9c6247ee6d50eaed2da77">9ab26aa5</a>)</li> <li>Make trigger(focus/blur/click) work with native handlers (<a href="https://github.com/jquery/jquery/issues/5015">#5015</a>, <a href="https://github.com/jquery/jquery/commit/754108fbbf449b8d9736c6259551be538055a60a">754108fb</a>)</li> <li>Simulate focus/blur in IE via focusin/focusout (3.x version) (<a href="https://github.com/jquery/jquery/issues/4856">#4856</a>, <a href="https://github.com/jquery/jquery/issues/4859">#4859</a>, <a href="https://github.com/jquery/jquery/issues/4950">#4950</a>, <a href="https://github.com/jquery/jquery/commit/59f7b55bf6dad71eee6434116566356d597f1d90">59f7b55b</a>)</li> </ul> <h3>Release</h3> <ul> <li>add support for md5 sums in windows (<a href="https://github.com/jquery/jquery/commit/3b7bf19998b8373a402f8f2c933fbbe0c112f0ed">3b7bf199</a>)</li> </ul> <h3>Selector</h3> <ul> <li>Remove an obsolete comment (<a href="https://github.com/jquery/jquery/commit/14685b318ae056cf9011ba2dcc73c077c3ae5a2d">14685b31</a>)</li> <li>Wrap activeElement access in try-catch (<a href="https://github.com/jquery/jquery/commit/3936cf3ef355a556d7990c77bbcacb69208fa4ed">3936cf3e</a>)</li> <li>Stop relying on CSS.supports( “selector(…)” ) (<a href="https://github.com/jquery/jquery/issues/5194">#5194</a>, <a href="https://github.com/jquery/jquery/commit/63c3af481c7010920bca68518c434cd27ab22cb2">63c3af48</a>)</li> <li>Rename rcombinators to rleadingCombinator (<a href="https://github.com/jquery/jquery/commit/ac1c59a354c1e333cbe3c40f3b3dc7f644d81f6b">ac1c59a3</a>)</li> <li>Make selector lists work with `qSA` again (<a href="https://github.com/jquery/jquery/issues/5177">#5177</a>, <a href="https://github.com/jquery/jquery/commit/848de625425c6b08ec9d8ad9a4bcab7e913c2477">848de625</a>)</li> <li>Implement the `uniqueSort` chainable method (<a href="https://github.com/jquery/jquery/issues/5166">#5166</a>, <a href="https://github.com/jquery/jquery/commit/0acbe6433c2689327a7fff94f64dbee42f801ff8">0acbe643</a>)</li> <li>Inline Sizzle into the selector module: 3.x version (<a href="https://github.com/jquery/jquery/pull/5113">#5113</a>) (<a href="https://github.com/jquery/jquery/commit/6306ca499433c45b58a02f1cf3a76cbafbc4a391">6306ca49</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Indicate Chrome 112 & Safari 16.4 pass the cssHas support test (3.x version) (<a href="https://github.com/jquery/jquery/commit/1a4d87afa08a68d81c38172ca10941e25633c323">1a4d87af</a>)</li> <li>Fix tests added in gh-5233 (<a href="https://github.com/jquery/jquery/commit/759232e5af0eeba3c3107b6e8d20ab79aaf6ca6e">759232e5</a>)</li> <li>Add tests for arary data in ajax (<a href="https://github.com/jquery/jquery/commit/4837a95b367faa613105a03fa0cb8b8fc50c02d4">4837a95b</a>)</li> <li>Skip jQuery.Deferred.exceptionHook tests in IE 9 (<a href="https://github.com/jquery/jquery/commit/98dd622a55e672ef972cdd0854e7cd2f2db4e8ca">98dd622a</a>)</li> <li>Test AJAX deprecated event aliases properly (<a href="https://github.com/jquery/jquery/commit/18139213fffdc7d42e3aa802d1006848bb3f95df">18139213</a>)</li> <li>Fix selector tests in Chrome (<a href="https://github.com/jquery/jquery/commit/732592c2a779fb2001f037cce2b0cb860aeffa19">732592c2</a>)</li> <li>Skip the native :valid tests in IE 9 (<a href="https://github.com/jquery/jquery/commit/6b2094da797087b027b453b15efe28b947641e80">6b2094da</a>)</li> </ul> </div> </article> <article id="post-4507" class="post-4507 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2023/03/08/jquery-3-6-4-released-selector-forgiveness/" title="Permalink to jQuery 3.6.4 Released: Selector Forgiveness" rel="bookmark">jQuery 3.6.4 Released: Selector Forgiveness</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2023/03/08/jquery-3-6-4-released-selector-forgiveness/" title="10:52 am" rel="bookmark"><time class="entry-date" datetime="2023-03-08T10:52:36-05:00" pubdate>March 8, 2023</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>If you’ve been following along with recent jQuery releases, we have been working on how to address the recent addition of some new selectors in browsers, especially <code>:has</code>. <a href="https://blog.jquery.com/2022/12/20/jquery-3-6-3-released-a-quick-selector-fix/">jQuery 3.6.3</a> settled on the strategy of using native <code>CSS.supports</code> to determined whether a selector should be passed directly to <code>querySelectorAll</code> or instead go through jQuery’s selector engine, as might be the case when using jQuery selector extensions, complex <code>:not()</code>, or other selectors that are valid in jQuery but not in the browser. That all technically worked fine, but <a href="https://github.com/jquery/jquery/issues/5194">came with a downside</a>. Fortunately for us, the fix is <a href="https://github.com/w3c/csswg-drafts/issues/8378">no longer necessary</a> and we can go back to the old way. More on that below.</p> <p>As usual, the release is available on <a href="https://code.jquery.com/jquery-3.6.3.js">our cdn</a> 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.4.</p> <h2 class="wp-block-heading">The Difference Between What Is Right and What Is Allowed</h2> <p>Whenever you use a selector in CSS, or JS, there is more than one spec involved. There’s a spec to determine whether a selector is valid (i.e. <a href="https://drafts.csswg.org/selectors/">Selectors</a>) and there’s a spec to guide implementers in how a selector should be parsed (i.e. the <a href="https://drafts.csswg.org/css-syntax/#consume-simple-block">parser algorithm for consuming a simple block</a>). The parser implementation is more forgiving than the selector spec itself, to allow for things like attribute selectors missing the last <code>]</code> character.</p> <p>When we <a href="https://blog.jquery.com/2022/12/13/jquery-3-6-2-released/">addressed an issue</a> with some selectors that were being added to modern browsers—specifically <code>:has</code>—we started making use of another API available in most of our supported browsers—<code>CSS.supports</code>—to determine whether a selector could safely be passed to native <code>querySelectorAll</code> or whether it needed to go through jQuery’s selector engine. Selectors may need to bypass <code>qSA</code> for multiple reasons. It may be a jQuery-only selector extension (<code>:contains</code>), a standard selector that jQuery supports in a more robust way (<code>:not(complex)</code>), or a selector we know to be buggy sometimes (<code>:enabled</code> or <code>:disabled</code>). Whatever the reason, the introduction of “forgiving parsing” in selectors like <code>:has</code> made our previous way of determining that an issue because the browser would no longer throw errors for some truly invalid selectors. For instance, <code>:has(:contains)</code> no longer threw an error when passed to <code>querySelectorAll</code>. Neither did <code>:has(:monkey)</code> for that matter. <code>CSS.supports</code> seemed to be the answer.</p> <p>And yet, every solution can have a trade-off. The problem now was that selectors that were technically invalid according to the Selectors spec were throwing errors. But these same selectors used to work fine because the parsers were more, for lack of a better term, forgiving. Essentially, <code>CSS.supports</code> is not as forgiving as the parser.</p> </div></div> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>Meanwhile, in our discussions with spec writers and vendors, it was agreed that we needed to prevent issues similar to the one with <code>:has</code> from happening again in the future. What does that mean? It means we can go back to the old way . . . <a href="https://github.com/jquery/jquery/pull/5206">mostly</a>. While the spec has been updated, browsers will need some time to update their implementations. And because of that, we still recommend upgrading jQuery to the latest version.</p> </div></div> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>.</p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.6.4.js">https://code.jquery.com/jquery-3.6.4.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.4.min.js">https://code.jquery.com/jquery-3.6.4.min.js</a></p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.6.4</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.6.4.slim.js">https://code.jquery.com/jquery-3.6.4.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.4.slim.min.js">https://code.jquery.com/jquery-3.6.4.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">We’re on Mastodon!</h2> <p>jQuery now has its very own Mastodon account. We will be cross posting to both Twitter and Mastodon from now on. Also, you may be interested in following some of our team members that have Mastodon accounts.</p> </div></div> <p>jQuery: <a href="https://social.lfx.dev/@jquery">https://social.lfx.dev/@jquery</a></p> <p>mgol: <a href="https://hachyderm.io/@mgol">https://hachyderm.io/@mgol</a></p> <p>timmywil: <a href="https://hachyderm.io/@timmywil">https://hachyderm.io/@timmywil</a></p> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.6.3...3.6.4">3.6.4</a></p> </div></div> <h3>Build</h3> <ul> <li>Update Sizzle from 2.3.9 to 2.3.10 (<a href="https://github.com/jquery/jquery/issues/5194">#5194</a>, <a href="https://github.com/jquery/jquery/commit/dbe09e39673fa77f7753c30fea783fc061d1230f">dbe09e39</a>)</li> <li>Updating the 3.6-stable version to 3.6.4-pre. (<a href="https://github.com/jquery/jquery/commit/a0d68b8441ae899a37b8f61dc2c33dc7cf03d0af">a0d68b84</a>)</li> </ul> </div> </article> <article id="post-4495" class="post-4495 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2022/12/20/jquery-3-6-3-released-a-quick-selector-fix/" title="Permalink to jQuery 3.6.3 Released: A Quick Selector Fix" rel="bookmark">jQuery 3.6.3 Released: A Quick Selector Fix</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2022/12/20/jquery-3-6-3-released-a-quick-selector-fix/" title="4:35 pm" rel="bookmark"><time class="entry-date" datetime="2022-12-20T16:35:36-05:00" pubdate>December 20, 2022</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>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 <code>:has()</code>. We wanted to release jQuery 3.6.3 quickly because an <a href="https://github.com/jquery/jquery/issues/5177">issue was reported</a> that revealed a problem with our original fix. More details on that below.</p> <p>As usual, the release is available on <a href="https://code.jquery.com/jquery-3.6.3.js">our cdn</a> 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.</p> <h2 class="wp-block-heading">Using <code>CSS.supports</code> the right way</h2> <p>After the <a href="https://github.com/jquery/jquery/issues/5098">issue with <code>:has</code></a> that was <a href="https://blog.jquery.com/2022/12/13/jquery-3-6-2-released/">fixed in jQuery 3.6.2</a>, we started using <code>CSS.supports( "selector(SELECTOR)")</code> to determine whether a selector would be valid if passed directly to <code>querySelectorAll</code>. When <code>CSS.supports</code> returned <code>false</code>, jQuery would then fall back to its own selector engine (Sizzle). Apparently, our implementation had a bug. In <code>CSS.supports( "selector(SELECTOR)")</code>, <a href="https://w3c.github.io/csswg-drafts/css-conditional-4/#at-supports-ext">SELECTOR</a> needed to be a <code><a href="https://w3c.github.io/csswg-drafts/selectors-4/#typedef-complex-selector"><complex-selector></a></code> and not a <code><a href="https://w3c.github.io/csswg-drafts/selectors-4/#typedef-complex-selector-list"><complex-selector-list></a></code>. For example:</p> <pre class="wp-block-code"><code>CSS.supports("selector(div)"); // true CSS.supports("selector(div, span)"); // false</code></pre> <p>This meant that all complex selector lists were passed through Sizzle instead of <code>querySelectorAll</code>. 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 <code>:valid</code>, no longer worked if it was part of a selector list (e.g. <code>"input:valid, div"</code>). It should be noted this currently only affects Firefox, but it will be true in all browsers as they roll out changes to <code>CSS.supports</code>.</p> <p>This has now been fixed in jQuery 3.6.3 and it is the only functional change in this release.</p> </div></div> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>. </p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.6.3.js">https://code.jquery.com/jquery-3.6.3.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.3.min.js">https://code.jquery.com/jquery-3.6.3.min.js</a> </p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.6.3</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.6.3.slim.js">https://code.jquery.com/jquery-3.6.3.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.3.slim.min.js">https://code.jquery.com/jquery-3.6.3.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a> and the whole jQuery team.</p> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.6.2...3.6.3">3.6.3</a></p> </div></div> <h3>Build</h3> <ul> <li>remove stale Insight package from custom builds (<a href="https://github.com/jquery/jquery/commit/81d5bd17fd2f82779351c101de280f89c22948ac">81d5bd17</a>)</li> <li>Updating the 3.x-stable version to 3.6.3-pre. (<a href="https://github.com/jquery/jquery/commit/2c5b47c4def78e447d2eb97a6f382e2b713165f8">2c5b47c4</a>)</li> </ul> <h3>Selector</h3> <ul> <li>Update Sizzle from 2.3.8 to 2.3.9 (<a href="https://github.com/jquery/jquery/issues/5177">#5177</a>, <a href="https://github.com/jquery/jquery/commit/8989500e6c695d10806400d20381da4d1ed34a7b">8989500e</a>)</li> </ul> </div> </article> <article id="post-4464" class="post-4464 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2022/12/13/jquery-3-6-2-released/" title="Permalink to jQuery 3.6.2 Released!" rel="bookmark">jQuery 3.6.2 Released!</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2022/12/13/jquery-3-6-2-released/" title="10:13 am" rel="bookmark"><time class="entry-date" datetime="2022-12-13T10:13:13-05:00" pubdate>December 13, 2022</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>You probably weren’t expecting another release so soon, but jQuery 3.6.2 has arrived! The main impetus for this release was the introduction of some new selectors in Chrome. More on that below.</p> <p>As usual, the release is available on <a href="https://code.jquery.com/jquery-3.6.2.js">our cdn</a> 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.2.</p> <h2 class="wp-block-heading">undefined and whitespace-only CSS variables</h2> <p>jQuery 3.6.1 introduced a minor regression where attempting to retrieve a value for a custom CSS property that didn’t exist (i.e. <code>$elem.css("--custom")</code>) threw an error instead of returning undefined. This has been fixed in 3.6.2. Related to that, we also made sure that whitespace-only values return the same thing across all browsers. The spec requires that CSS variable values be trimmed, but browsers are inconsistent in their trimming. We <a href="https://github.com/jquery/jquery/commit/8bea1dec18da3f3a02751dc226d51b9d0546b49e">now return undefined for whitespace-only values</a> to make it consistent with older jQuery and across the different browsers.</p> <h2 class="wp-block-heading"><strong>.contains() with <template></strong></h2> <p>An <a href="https://github.com/jquery/jquery/issues/5147">issue was recently reported</a> that showed that a <code><template></code>‘s document had its <code>documentElement</code> property set to <code>null</code>, in compliance with the spec. While it made sense semantically for a template to not yet be tied to a document, it made for an unusual case, specifically in <code>jQuery.contains()</code> and any methods relying on it. That included manipulation and selector methods. Fortunately, <a href="https://github.com/jquery/jquery/pull/5159">the fix</a> was simple.</p> <h2 class="wp-block-heading">It wasn’t Ralph that broke the internet</h2> <p>The internet experienced a bit of a rumble when Chrome recently introduced some new selectors, the most pertinent of which being <code>:has()</code>. It was a welcome addition, and one celebrated by the jQuery team, but a change to the spec meant that <code>:has()</code> used what’s called “forgiving parsing”. Essentially, even if the arguments for <code>:has()</code> were invalid, the browser returned no results instead of throwing an error. That was problematic in cases where <code>:has()</code> contained another jQuery selector extension (e.g. <code>:has(:contains("Item"))</code>) or contained itself (<code>:has(div:has(a))</code>). Sizzle relied on errors like that to know when to trust native <code>querySelectorAll</code> and when to run the selector through Sizzle. Selectors that used to work were broken in all jQuery versions dating back to the earliest jQuery versions.</p> <p>And yet, this little drama didn’t last long. The Chrome team <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=1358953">quickly implemented a workaround</a> to fix previous jQuery versions in the vast majority of cases. Safari handled their implementation of <code>:has()</code> a little differently and <a href="https://bugs.webkit.org/show_bug.cgi?id=244708">didn’t have the same problem</a>. <s>But, there’s still <a href="https://github.com/w3c/csswg-drafts/issues/7676">an important issue</a> open to determine how to address this in the CSS spec itself.</s> The CSSWG has since <a href="https://github.com/w3c/csswg-drafts/issues/7676#issuecomment-1341347244">resolved the issue</a>.</p> <p>jQuery has taken steps to ensure that <a href="https://github.com/jquery/jquery/pull/5107">any forgiving parsing doesn’t break future jQuery versions</a>, even if previous jQuery versions would still be affected.</p> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>. </p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.6.2.js">https://code.jquery.com/jquery-3.6.2.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.2.min.js">https://code.jquery.com/jquery-3.6.2.min.js</a> </p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.6.2</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.6.2.slim.js">https://code.jquery.com/jquery-3.6.2.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.2.slim.min.js">https://code.jquery.com/jquery-3.6.2.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/sashashura">sashashura</a>, <a href="https://github.com/andersk">Anders Kaseorg</a>, <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a>, and the whole jQuery team.</p> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.6.1...3.6.2">3.6.2</a></p> </div></div> <h3>CSS</h3> <ul> <li>Return <code>undefined</code> for whitespace-only CSS variable values (#5120) (<a href="https://github.com/jquery/jquery/commit/8bea1dec18da3f3a02751dc226d51b9d0546b49e">8bea1dec</a>)</li> <li>Don’t trim whitespace of undefined custom property (<a href="https://github.com/jquery/jquery/issues/5105">#5105</a>, <a href="https://github.com/jquery/jquery/commit/c0db6d70320ad6fb29a6a89aae3811a81b5adedf">c0db6d70</a>)</li> </ul> <h3>Selector</h3> <ul> <li>Manipulation: Fix DOM manip within template contents (<a href="https://github.com/jquery/jquery/issues/5147">#5147</a>, <a href="https://github.com/jquery/jquery/commit/5318e3111afd4c307ad6851682620d7413824fc5">5318e311</a>)</li> <li>Update Sizzle from 2.3.7 to 2.3.8 (<a href="https://github.com/jquery/jquery/issues/5147">#5147</a>, <a href="https://github.com/jquery/jquery/commit/a1b7ae3b3fb86b184bd50666c211f08bbc2ee686">a1b7ae3b</a>)</li> <li>Update Sizzle from 2.3.6 to 2.3.7 (<a href="https://github.com/jquery/jquery/issues/5098">#5098</a>, <a href="https://github.com/jquery/jquery/commit/ee0fec052bc56cc1bf229260ea9edd4ed3af99ca">ee0fec05</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Remove a workaround for a Firefox XML parsing issue (<a href="https://github.com/jquery/jquery/commit/965391ab9348c624b0fba42f79d3131652d9d494">965391ab</a>)</li> <li>Make Ajax tests pass in iOS 9 (<a href="https://github.com/jquery/jquery/commit/d051e0e3a2aac3d5cf671b180fdf7b92d627a5bc">d051e0e3</a>)</li> </ul> </div> </article> <article id="post-4443" class="post-4443 post type-post status-publish format-standard hentry category-jquery tag-jquery-updates"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/jquery/">jQuery</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2022/08/26/jquery-3-6-1-maintenance-release/" title="Permalink to jQuery 3.6.1 Maintenance Release" rel="bookmark">jQuery 3.6.1 Maintenance Release</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2022/08/26/jquery-3-6-1-maintenance-release/" title="12:55 pm" rel="bookmark"><time class="entry-date" datetime="2022-08-26T12:55:14-05:00" pubdate>August 26, 2022</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/timmywil/" title="View all posts by Timmy Willison" rel="author">Timmy Willison</a></span></span> </div> </header> <div class="entry-content"> <div class="wp-block-group is-layout-flow"><div class="wp-block-group__inner-container"> <p>jQuery 3.6.1 has been released! It’s been a while since our previous release. We were looking at fixing some elusive edge cases related to focus and blur, but we never quite got the fix right. If there’s any area of jQuery that’s hard to change, it’s likely related to focus somehow. We’re leaving those as-is for now and will address them in the future, especially since the changes may end up warranting a major version release. See <a href="https://github.com/jquery/jquery/issues/4856">gh-4856</a> and <a href="https://github.com/jquery/jquery/issues/4950">gh-4950</a> for more details.</p> <p>That said, this release still comes with some important fixes, detailed below.</p> <p>As usual, the release is available on <a href="https://code.jquery.com/jquery-3.6.1.js">our cdn</a> 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.1:</p> <h3 class="wp-block-heading">Infrastructure Improvements</h3> <p>We’ve done a lot of work in this release to update some of our testing and build infrastructure, including migrating CI from Travis CI to GitHub Actions, testing on Node 16 instead of Node 15, loading our testing listener over https, and adding more accurate testing for custom builds. We also removed some old links from comments in some files in the repo. These links were to URLs that have since been compromised. While these files were never distributed in a release, they still existed in the GitHub source and have been removed.</p> <h3 class="wp-block-heading">Not losing focus</h3> <p>There’s still <a href="https://github.com/jquery/jquery/issues/4867">one fix related to focus</a> in this release. Our special event handling for focus remained attached even after jQuery focus handlers were removed, which broke any subsequent manual focus triggers. For example,</p> <pre class="wp-block-preformatted"><code>$elem .on("focus", function() {}) .off("focus") .trigger("focus");</code></pre> <p>would not trigger focus.</p> <h3 class="wp-block-heading">Skipping falsey in addClass( array )</h3> <p>Without any size increase, we <a href="https://github.com/jquery/jquery/issues/4998">added support</a> for skipping over any falsey values in an array passed to <code>addClass </code>or <code>removeClass</code>. </p> <p>This makes code like:</p> <pre class="wp-block-preformatted"><code>elem.addClass( [ "a", "", "b" ] );</code></pre> <p>add both the <code>a</code> & <code>b</code> classes.</p> <h3 class="wp-block-heading">Aligning with the spec for custom CSS property values</h3> <p>A <a href="https://github.com/w3c/csswg-drafts/issues/774">change to the CSS spec</a> requires that custom properties be trimmed. Whitespace is now <a href="https://github.com/jquery/jquery/commit/219ccf5c5ffd751adb782335f0a36da79070f102">trimmed</a> for custom CSS property values. Before, something like <code>--prop: value ;</code> would retain the leading and trailing spaces in the value, returning ” value “.</p> <h3 class="wp-block-heading">Appending scripts with HTML comments</h3> <p>An issue was discovered with our regex that strips HTML comments from scripts when they are appended, which ended up removing parts of the executable script in certain edge cases. Fortunately, our fix was to <a href="https://github.com/jquery/jquery/pull/4905">rely more on the browsers</a>, but we still need to strip CDATA sections for IE in the 3.x branch. That will be removed in 4.0.</p> <h3 class="wp-block-heading">A performance boost for jQuery.trim</h3> <p>While <code>jQuery.trim</code> has already been removed on the main branch in favor of native <code>String#trim</code> in preparation for the next major release, it’s still needed on the 3.x branch for some browsers that branch supports, such as Android 4.0. There were certain edge cases that were incredibly slow due to the structure of our regex. That has since been changed and the speed-up is <a href="https://github.com/jquery/jquery/pull/5068#issuecomment-1189112865">significant</a>.</p> <h2 class="wp-block-heading">Upgrading</h2> <p>We do not expect compatibility issues when upgrading from a jQuery 3.0+ version. To upgrade, have a look at the new <a href="https://jquery.com/upgrade-guide/3.5/">3.5 Upgrade Guide</a>. If you haven’t yet upgraded to jQuery 3+, first have a look at the <a href="https://jquery.com/upgrade-guide/3.0/">3.0 Upgrade Guide</a>.</p> <p>The <a href="https://github.com/jquery/jquery-migrate#migrate-older-jquery-code-to-jquery-30">jQuery Migrate plugin</a> will help you to identify compatibility issues in your code. Please try out this new release and <a href="https://github.com/jquery/jquery/issues">let us know about any issues you experienced</a>. </p> <p>If you can’t yet upgrade to 3.5+, Daniel Ruf has kindly provided <a href="https://github.com/DanielRuf/snyk-js-jquery-565129">patches for previous jQuery versions</a>.</p> <h2 class="wp-block-heading">Download</h2> <p>You can get the files from the jQuery CDN, or link to them directly:</p> <p><a href="https://code.jquery.com/jquery-3.6.1.js">https://code.jquery.com/jquery-3.6.1.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.1.min.js">https://code.jquery.com/jquery-3.6.1.min.js</a> </p> <p>You can also get this release from npm:</p> <p><code>npm install jquery@3.6.1</code></p> <h3 class="wp-block-heading">Slim build</h3> <p>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:</p> <p><a href="https://code.jquery.com/jquery-3.6.1.slim.js">https://code.jquery.com/jquery-3.6.1.slim.js</a></p> <p><a href="https://code.jquery.com/jquery-3.6.1.slim.min.js">https://code.jquery.com/jquery-3.6.1.slim.min.js</a></p> <p>These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at <a href="https://jquery.com/download/">https://jquery.com/download/</a>. 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.</p> <h2 class="wp-block-heading">Thanks</h2> <p>Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including <a href="https://github.com/fecore1">fecore1</a>, <a href="https://github.com/gibson042">Richard Gibson</a>, <a href="https://github.com/simon04">Simon Legner</a>, <a href="https://github.com/mgol">Michal Golebiowski-Owczarek</a>, <a href="https://github.com/vlsi">Vladimir Sitnikov</a>, <a href="https://github.com/Krinkle">Timo Tijhof</a>, <a href="https://github.com/coliff">Christian Oliff</a>, <a href="https://github.com/ygj6">ygj6</a>, and the whole jQuery team.</p> <h2 class="wp-block-heading">Changelog</h2> <p><strong>Full changelog: </strong><a href="https://github.com/jquery/jquery/compare/3.6.0...3.6.1">3.6.1</a></p> </div></div> <h3>CSS</h3> <ul> <li>Skip falsy values in `addClass( array )`, compress code (<a href="https://github.com/jquery/jquery/issues/4998">#4998</a>, <a href="https://github.com/jquery/jquery/commit/9b34bdb1c35c5c2bdb367dd80928825874d3ec3f">9b34bdb1</a>)</li> <li>Justify use of rtrim on CSS property values (<a href="https://github.com/jquery/jquery/commit/a1373e2e4f7323d30b2c8b05c3e51aa2e9dd07ec">a1373e2e</a>)</li> <li>Remove a redundant extension from rtrimCSS inclusion in curCSS (<a href="https://github.com/jquery/jquery/commit/509eeb892c85fca0f489a2af5bf334285e9330de">509eeb89</a>)</li> <li>Trim whitespace surrounding CSS Custom Properties values (<a href="https://github.com/jquery/jquery/issues/4926">#4926</a>, <a href="https://github.com/jquery/jquery/commit/219ccf5c5ffd751adb782335f0a36da79070f102">219ccf5c</a>)</li> </ul> <h3>Deprecated</h3> <ul> <li>Improve $.trim performance for strings with lots of whitespace (<a href="https://github.com/jquery/jquery/commit/699401008fbc6cdfc5d6a1d531e1bc5013a94bec">69940100</a>)</li> </ul> <h3>Docs</h3> <ul> <li>Update webpack website in README (<a href="https://github.com/jquery/jquery/commit/410d5cf0c3d0d92b2e9abd7fe0b16eb79c9a2a51">410d5cf0</a>)</li> <li>add link to preview the new CLAs (<a href="https://github.com/jquery/jquery/commit/b24e83bd9d7fceedadf1fe32a5982972500b772c">b24e83bd</a>)</li> <li>Replace `#NUMBER` Trac issue references with `trac-NUMBER` (<a href="https://github.com/jquery/jquery/commit/95e34b69554cf9d3a52e4d932e581344990f60fa">95e34b69</a>)</li> <li>remove expired links from old jquery source (<a href="https://github.com/jquery/jquery/commit/c3c4d2073695bccdfc2da01152a5f4242a2ac803">c3c4d207</a>)</li> <li>Remove links to Web Archive from source (<a href="https://github.com/jquery/jquery/issues/4981">#4981</a>, <a href="https://github.com/jquery/jquery/commit/4b0d8900eca0180720636e15a4038e066bc95280">4b0d8900</a>)</li> <li>Update the URL to the latest jQuery build in CONTRIBUTING.md (<a href="https://github.com/jquery/jquery/commit/4bb7d069ca52f8a25b392b0428a43f16f07eb192">4bb7d069</a>)</li> <li>Remove the CLA checkbox in the pull request template (<a href="https://github.com/jquery/jquery/commit/934064905cfb021246f1107af0858306aa906cf7">93406490</a>)</li> </ul> <h3>Event</h3> <ul> <li>Don’t break focus triggering after `.on(focus).off(focus)` (<a href="https://github.com/jquery/jquery/issues/4867">#4867</a>, <a href="https://github.com/jquery/jquery/commit/b3e4a7eb16f68586e25a1f27f7f7c5ecba013261">b3e4a7eb</a>)</li> </ul> <h3>Manipulation</h3> <ul> <li>Don’t remove HTML comments from scripts (<a href="https://github.com/jquery/jquery/issues/4904">#4904</a>, <a href="https://github.com/jquery/jquery/commit/924b515dd3f33fff3e5122408fcccecc2d775425">924b515d</a>)</li> </ul> <h3>Tests</h3> <ul> <li>Exclude tests based on compilation flags, not API presence (3.x version) (<a href="https://github.com/jquery/jquery/issues/5069">#5069</a>, <a href="https://github.com/jquery/jquery/commit/bc16512879bd81de9874bffa690404e14e8f43ff">bc165128</a>)</li> <li>Workaround an XML parsing bug in Firefox (<a href="https://github.com/jquery/jquery/commit/be3bd560f47ba46e01dcf42c3f6833aaa8596a33">be3bd560</a>)</li> <li>lock colors version to 1.4.0 (<a href="https://github.com/jquery/jquery/commit/fa70e8fd3cfcf1ecee33d1ebcbc987d48bb208f4">fa70e8fd</a>)</li> <li>Skip ETag AJAX tests on TestSwarm (<a href="https://github.com/jquery/jquery/commit/81fa1e2ae9f5d3f666b8d8f844703110bfe4051f">81fa1e2a</a>)</li> <li>Allow statusText to be “success” in AJAX tests (<a href="https://github.com/jquery/jquery/commit/7439e221c02abe6690b38afece519f830481e179">7439e221</a>)</li> <li>Disable CSS Custom Properties tests in old Safari/iOS (<a href="https://github.com/jquery/jquery/commit/e9f77267d00f5d323a8d52bbacdd8d31b265154a">e9f77267</a>)</li> <li>Make Karma browser timeout larger than the QUnit one (<a href="https://github.com/jquery/jquery/commit/a51eec74846e2875345e16c737edcc76481f0e34">a51eec74</a>)</li> <li>Don’t remove csp.log in the cspClean action of mock.php (<a href="https://github.com/jquery/jquery/commit/ba81326ffdf60f294c08c7b76168946930736633">ba81326f</a>)</li> <li>Load the TestSwarm listener via HTTPS (<a href="https://github.com/jquery/jquery/commit/f6f07204727c7dd2904c2f3dfb1c929a1eae8282">f6f07204</a>)</li> <li>Switch background image from online file to local 1×1.jpg (<a href="https://github.com/jquery/jquery/commit/8d20cb9732bc7bb7d29b8ba97042e27aaebff1e0">8d20cb97</a>)</li> <li>Strip untypical callback parameter characters from mock.php (<a href="https://github.com/jquery/jquery/commit/b14b62c8a28af396e20e7234086926f393dd314a">b14b62c8</a>)</li> </ul> <h3>Infrastructure</h3> <ul> <li>Update GitHub Actions (<a href="https://github.com/jquery/jquery/commit/0f6c3d9efc5f7e844bdcf8ef44f9327f414bea77">0f6c3d9e</a>)</li> <li>Add dependabot.yml config (GitHub Actions) (<a href="https://github.com/jquery/jquery/commit/5a363017cf80c3329bace5b45812a9dc10fcde7c">5a363017</a>)</li> <li>Test on Node 17, update Grunt & `karma-*` packages (<a href="https://github.com/jquery/jquery/commit/9bc0df70be9455128a26f2e726213f0d544c70d4">9bc0df70</a>)</li> <li>Separate the install step from running tests in GitHub Actions (<a href="https://github.com/jquery/jquery/commit/cb35067f1b16661fa865f4f4e31132e37f5f4091">cb35067f</a>)</li> <li>remove travis.yml and travis mentions from core (#4984) (<a href="https://github.com/jquery/jquery/commit/55669883599eb03697df37814ead5eab79296d19">55669883</a>)</li> <li>Migrate CI to GitHub Actions (<a href="https://github.com/jquery/jquery/commit/b39cfa1505f5ccce28a4a83d8700f0edb3e9cd8c">b39cfa15</a>)</li> <li>Test on Node.js 16 instead of 15 (<a href="https://github.com/jquery/jquery/commit/f12cac6075ebce3e2b0ee4cfa58c24c559ce6a6a">f12cac60</a>)</li> <li>Take core-js from the external directory as well (<a href="https://github.com/jquery/jquery/commit/752b8981f8ee410d4c2cbada18a9afa2d880263b">752b8981</a>)</li> <li>Updating the 3.x-stable version to 3.6.1-pre. (<a href="https://github.com/jquery/jquery/commit/3642471ec5b6716ce96c2560eadc3f7470f8df56">3642471e</a>)</li> </ul> </div> </article> <article id="post-4424" class="post-4424 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <div class="entry-meta"> <span class="category"><a href="https://blog.jquery.com/category/uncategorized/">Uncategorized</a></span> </div> <h1 class="entry-title"> <a href="https://blog.jquery.com/2021/10/07/jquery-maintainers-continue-modernization-initiative-with-deprecation-of-jquery-mobile/" title="Permalink to jQuery maintainers continue modernization initiative with deprecation of jQuery Mobile" rel="bookmark">jQuery maintainers continue modernization initiative with deprecation of jQuery Mobile</a> </h1> <div class="entry-posted"> <span class="sep">Posted on </span><a href="https://blog.jquery.com/2021/10/07/jquery-maintainers-continue-modernization-initiative-with-deprecation-of-jquery-mobile/" title="10:22 am" rel="bookmark"><time class="entry-date" datetime="2021-10-07T10:22:16-05:00" pubdate>October 7, 2021</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blog.jquery.com/author/mgol/" title="View all posts by Michal Golebiowski-Owczarek" rel="author">Michal Golebiowski-Owczarek</a></span></span> </div> </header> <div class="entry-content"> <p>By: Michal Golebiowski-Owczarek, Felix Nagel, and the jQuery team</p> <p><em>Editor’s Note: the following blog post was originally published to the </em><a href="https://openjsf.org/blog/2021/10/07/deprecation-of-jquery-mobile/"><em>OpenJS Foundation Blog</em></a><em>.</em></p> <p>jQuery maintainers are continuing to modernize its overall project that still is one of the most widely deployed JavaScript libraries today. The team announced that the cross-platform jQuery Mobile project under its umbrella will be fully deprecated as of October 7, 2021. New technologies for mobile app development have evolved since this project was launched in 2010, so we’re encouraging developers to plan for this jQuery Mobile transition.</p> <p>Please note that:</p> <ul> <li>The Download Builder will remain available.</li> <li>Mobile 1.4 is not compatible with the latest jQuery Core.</li> <li>Issues will be turned off. Please report critical security bugs via email to security@jquery.com. </li> </ul> <p><strong>Celebrating jQuery Mobile’s History</strong></p> <p>jQuery Mobile was conceived and announced in 2010, three years after the launch of jQuery. The project was exciting and ambitious. At announcement, jQuery Mobile promised compatibility across multiple platforms, browsers, and versions. Several mobile browser vendors, including Palm and Mozilla, signed on to sponsor the project: </p> <p><br><em>“The jQuery community has focused on making the Web as productive and fun as possible. When we heard the mission behind jQuery Mobile, we wanted to help. With webOS we have shown that the Web platform is fantastic for developers, so we are excited to help make jQuery Mobile as good as it can be.” -Dion Almaer – Palm</em></p> <p>At the time, the mobile web was desperately in need of a framework capable of working across all browsers, allowing developers to build truly mobile web applications. jQuery had already changed the way developers were building on the web, making it easier (and faster) to create secure, compliant applications. </p> <p>With jQuery Mobile, the project’s goals were to bring the ease-of-use of jQuery to HTML-capable mobile device browsers and to make it easier for developers to build progressively enhanced web applications. Led by Todd Parker of Filament Group, a development studio known for their work on cross platform and accessibility-first applications, jQuery Mobile launched its alpha release in October 2010. </p> <p>Alpha features included several components, layouts and theming tools that simplified the process of building a mobile web application. Progressive enhancement and graceful degradation, which were hot (and tricky) topics in web development at the time, featured heavily: jQuery Mobile promised developers and users the best possible experience their platform could handle. Accessibility was another key feature, with Mobile promising a user experience that could be navigated by touch, keyboard, or screen reader via ARIA compatible components. Additional features such as simplicity, file size, and the ability to deploy jQuery Mobile applications through an app store drove further excitement. </p> <p>Over the next year, the jQuery Mobile team continued to add compatible platforms and browsers, new components and themes, and eventually a themeroller tool that allowed developers to configure and download themes without writing any CSS. </p> <p>The community response was overwhelming – by the time 1.0 was released in November 2011, jQuery Mobile had gathered over 125 contributors, dozens of articles, tutorials and demos, 8 published books, and a gallery of sites, plugins and extensions to welcome and introduce new developers to the project. </p> <p>jQuery Mobile continued to make monthly releases throughout 2012 and 2013, regularly adding and improving components, resolving compatibility issues with mobile browsers, and making performance improvements to speed up page rendering times. The development team also continued to prioritize and highlight the importance of responsive web design and accessibility principles with each new release. </p> <p>As the number of components and widgets swelled – both those that were officially supported or widely adopted in the community, performance and compatibility issues with mobile platforms, browsers, and jQuery core were also exacerbated. Though the project did have some automated tests, there were still a number of items that needed to be tested manually, which slowed down the development process. </p> <p>In mid 2013, Jasper de Groot became the project lead and announced tighter development collaboration between jQuery UI and jQuery Mobile teams, sharing goals, roadmaps and code in order to ease the workload for both groups. The team continued to provide maintenance releases and support, but progress continued to slow under the burden of testing and supporting such a large community. </p> <p>Alex Schmitz took over the lead in July 2014, but by that time the size of the project, combined with the pace and availability of new mobile browser features, made finding a viable path forward for the project increasingly difficult. </p> <p>The latest stable version was released October 2014. Alex and team made a big push to update jQuery Mobile again in 2017 with the release of an alpha version of 1.5; this version would see compatibility with jQuery 3.0 and npm support among other things.</p> <p>jQuery Mobile became an OpenJS Foundation Emeritus project in 2018, signifying that the goals of the project had been achieved.</p> <p><strong>jQuery modernization initiative</strong></p> <p>The depreciation of jQuery mobile follows the careful transition of another project under the jQuery project umbrella, <a href="https://blog.jquery.com/2021/10/07/jquery-maintainers-update-and-transition-jquery-ui-as-part-of-overall-modernization-efforts/">jQuery UI</a>.</p> <p>jQuery Core is still actively maintained and widely implemented. As part of its modernization initiative, the team also has been making a series of updates this year to its infrastructure, including migrating and improving its CDN.</p> <p><strong>Celebrating jQuery Mobile Maintainers and Contributors</strong></p> <p>The contributions to jQuery Mobile opened up opportunities for people and organizations around the world, and we are thankful for all the contributions over the years. We would like to give an extra shout out of gratitude to the past maintainers of jQuery Mobile: Alexander Schmitz, Jasper de Groot, and Todd Parker.</p> </div> </article> <div class="pagination"><span aria-current="page" class="page-numbers current">1</span> <a class="page-numbers" href="https://blog.jquery.com/page/2/">2</a> <a class="page-numbers" href="https://blog.jquery.com/page/3/">3</a> <span class="page-numbers dots">…</span> <a class="page-numbers" href="https://blog.jquery.com/page/40/">40</a> <a class="next page-numbers" href="https://blog.jquery.com/page/2/">Next »</a></div> </div> <div id="sidebar" class="widget-area" role="complementary"> <aside class="widget"> <h3 class="widget-title">Categories</h3> <ul> <li class="cat-item cat-item-16"><a href="https://blog.jquery.com/category/events/">Events</a> </li> <li class="cat-item cat-item-20"><a href="https://blog.jquery.com/category/foundation/">Foundation</a> </li> <li class="cat-item cat-item-3"><a href="https://blog.jquery.com/category/jquery/">jQuery</a> </li> <li class="cat-item cat-item-2"><a href="https://blog.jquery.com/category/jquery-ui/">jQuery UI</a> </li> <li class="cat-item cat-item-24"><a href="https://blog.jquery.com/category/projects/">Projects</a> </li> <li class="cat-item cat-item-4"><a href="https://blog.jquery.com/category/weekly-news/">Weekly News</a> </li> </ul> </aside> <aside class="widget"> <h3 class="widget-title">Recent Posts</h3> <ul> <li><a href="https://blog.jquery.com/2024/07/17/second-beta-of-jquery-4-0-0/">Second Beta of jQuery 4.0.0</a></li><li><a href="https://blog.jquery.com/2024/04/17/upgrading-jquery-working-towards-a-healthy-web/">Upgrading jQuery: Working Towards a Healthy Web</a></li><li><a href="https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/">jQuery 4.0.0 BETA!</a></li><li><a href="https://blog.jquery.com/2023/08/28/jquery-3-7-1-released-reliable-table-row-dimensions/">jQuery 3.7.1 Released: Reliable Table Row Dimensions</a></li><li><a href="https://blog.jquery.com/2023/05/11/jquery-3-7-0-released-staying-in-order/">jQuery 3.7.0 Released: Staying in Order</a></li><li><a href="https://blog.jquery.com/2023/03/08/jquery-3-6-4-released-selector-forgiveness/">jQuery 3.6.4 Released: Selector Forgiveness</a></li><li><a href="https://blog.jquery.com/2022/12/20/jquery-3-6-3-released-a-quick-selector-fix/">jQuery 3.6.3 Released: A Quick Selector Fix</a></li><li><a href="https://blog.jquery.com/2022/12/13/jquery-3-6-2-released/">jQuery 3.6.2 Released!</a></li><li><a href="https://blog.jquery.com/2022/08/26/jquery-3-6-1-maintenance-release/">jQuery 3.6.1 Maintenance Release</a></li><li><a href="https://blog.jquery.com/2021/10/07/jquery-maintainers-continue-modernization-initiative-with-deprecation-of-jquery-mobile/">jQuery maintainers continue modernization initiative with deprecation of jQuery Mobile</a></li> </ul> </aside> <aside class="widget"> <h3 class="widget-title">Archives</h3> <ul> <li><a href='https://blog.jquery.com/2024/07/'>July 2024</a></li> <li><a href='https://blog.jquery.com/2024/04/'>April 2024</a></li> <li><a href='https://blog.jquery.com/2024/02/'>February 2024</a></li> <li><a href='https://blog.jquery.com/2023/08/'>August 2023</a></li> <li><a href='https://blog.jquery.com/2023/05/'>May 2023</a></li> <li><a href='https://blog.jquery.com/2023/03/'>March 2023</a></li> <li><a href='https://blog.jquery.com/2022/12/'>December 2022</a></li> <li><a href='https://blog.jquery.com/2022/08/'>August 2022</a></li> <li><a href='https://blog.jquery.com/2021/10/'>October 2021</a></li> <li><a href='https://blog.jquery.com/2021/06/'>June 2021</a></li> <li><a href='https://blog.jquery.com/2021/03/'>March 2021</a></li> <li><a href='https://blog.jquery.com/2020/05/'>May 2020</a></li> <li><a href='https://blog.jquery.com/2020/04/'>April 2020</a></li> <li><a href='https://blog.jquery.com/2019/05/'>May 2019</a></li> <li><a href='https://blog.jquery.com/2019/04/'>April 2019</a></li> <li><a href='https://blog.jquery.com/2018/08/'>August 2018</a></li> <li><a href='https://blog.jquery.com/2018/01/'>January 2018</a></li> <li><a href='https://blog.jquery.com/2017/03/'>March 2017</a></li> <li><a href='https://blog.jquery.com/2016/09/'>September 2016</a></li> <li><a href='https://blog.jquery.com/2016/07/'>July 2016</a></li> <li><a href='https://blog.jquery.com/2016/06/'>June 2016</a></li> <li><a href='https://blog.jquery.com/2016/05/'>May 2016</a></li> <li><a href='https://blog.jquery.com/2016/04/'>April 2016</a></li> <li><a href='https://blog.jquery.com/2016/03/'>March 2016</a></li> <li><a href='https://blog.jquery.com/2016/02/'>February 2016</a></li> <li><a href='https://blog.jquery.com/2016/01/'>January 2016</a></li> <li><a href='https://blog.jquery.com/2015/12/'>December 2015</a></li> <li><a href='https://blog.jquery.com/2015/11/'>November 2015</a></li> <li><a href='https://blog.jquery.com/2015/09/'>September 2015</a></li> <li><a href='https://blog.jquery.com/2015/07/'>July 2015</a></li> <li><a href='https://blog.jquery.com/2015/04/'>April 2015</a></li> <li><a href='https://blog.jquery.com/2015/03/'>March 2015</a></li> <li><a href='https://blog.jquery.com/2015/02/'>February 2015</a></li> <li><a href='https://blog.jquery.com/2015/01/'>January 2015</a></li> <li><a href='https://blog.jquery.com/2014/12/'>December 2014</a></li> <li><a href='https://blog.jquery.com/2014/10/'>October 2014</a></li> <li><a href='https://blog.jquery.com/2014/09/'>September 2014</a></li> <li><a href='https://blog.jquery.com/2014/08/'>August 2014</a></li> <li><a href='https://blog.jquery.com/2014/07/'>July 2014</a></li> <li><a href='https://blog.jquery.com/2014/05/'>May 2014</a></li> <li><a href='https://blog.jquery.com/2014/04/'>April 2014</a></li> <li><a href='https://blog.jquery.com/2014/03/'>March 2014</a></li> <li><a href='https://blog.jquery.com/2014/01/'>January 2014</a></li> <li><a href='https://blog.jquery.com/2013/12/'>December 2013</a></li> <li><a href='https://blog.jquery.com/2013/11/'>November 2013</a></li> <li><a href='https://blog.jquery.com/2013/10/'>October 2013</a></li> <li><a href='https://blog.jquery.com/2013/09/'>September 2013</a></li> <li><a href='https://blog.jquery.com/2013/08/'>August 2013</a></li> <li><a href='https://blog.jquery.com/2013/07/'>July 2013</a></li> <li><a href='https://blog.jquery.com/2013/06/'>June 2013</a></li> <li><a href='https://blog.jquery.com/2013/05/'>May 2013</a></li> <li><a href='https://blog.jquery.com/2013/04/'>April 2013</a></li> <li><a href='https://blog.jquery.com/2013/03/'>March 2013</a></li> <li><a href='https://blog.jquery.com/2013/02/'>February 2013</a></li> <li><a href='https://blog.jquery.com/2013/01/'>January 2013</a></li> <li><a href='https://blog.jquery.com/2012/12/'>December 2012</a></li> <li><a href='https://blog.jquery.com/2012/11/'>November 2012</a></li> <li><a href='https://blog.jquery.com/2012/10/'>October 2012</a></li> <li><a href='https://blog.jquery.com/2012/09/'>September 2012</a></li> <li><a href='https://blog.jquery.com/2012/08/'>August 2012</a></li> <li><a href='https://blog.jquery.com/2012/07/'>July 2012</a></li> <li><a href='https://blog.jquery.com/2012/06/'>June 2012</a></li> <li><a href='https://blog.jquery.com/2012/05/'>May 2012</a></li> <li><a href='https://blog.jquery.com/2012/04/'>April 2012</a></li> <li><a href='https://blog.jquery.com/2012/03/'>March 2012</a></li> <li><a href='https://blog.jquery.com/2012/01/'>January 2012</a></li> <li><a href='https://blog.jquery.com/2011/12/'>December 2011</a></li> <li><a href='https://blog.jquery.com/2011/11/'>November 2011</a></li> <li><a href='https://blog.jquery.com/2011/10/'>October 2011</a></li> <li><a href='https://blog.jquery.com/2011/09/'>September 2011</a></li> <li><a href='https://blog.jquery.com/2011/08/'>August 2011</a></li> <li><a href='https://blog.jquery.com/2011/06/'>June 2011</a></li> <li><a href='https://blog.jquery.com/2011/05/'>May 2011</a></li> <li><a href='https://blog.jquery.com/2011/04/'>April 2011</a></li> <li><a href='https://blog.jquery.com/2011/03/'>March 2011</a></li> <li><a href='https://blog.jquery.com/2011/02/'>February 2011</a></li> <li><a href='https://blog.jquery.com/2011/01/'>January 2011</a></li> <li><a href='https://blog.jquery.com/2010/12/'>December 2010</a></li> <li><a href='https://blog.jquery.com/2010/11/'>November 2010</a></li> <li><a href='https://blog.jquery.com/2010/10/'>October 2010</a></li> <li><a href='https://blog.jquery.com/2010/09/'>September 2010</a></li> <li><a href='https://blog.jquery.com/2010/08/'>August 2010</a></li> <li><a href='https://blog.jquery.com/2010/07/'>July 2010</a></li> <li><a href='https://blog.jquery.com/2010/06/'>June 2010</a></li> <li><a href='https://blog.jquery.com/2010/04/'>April 2010</a></li> <li><a href='https://blog.jquery.com/2010/03/'>March 2010</a></li> <li><a href='https://blog.jquery.com/2010/02/'>February 2010</a></li> <li><a href='https://blog.jquery.com/2010/01/'>January 2010</a></li> <li><a href='https://blog.jquery.com/2009/12/'>December 2009</a></li> <li><a href='https://blog.jquery.com/2009/11/'>November 2009</a></li> <li><a href='https://blog.jquery.com/2009/10/'>October 2009</a></li> <li><a href='https://blog.jquery.com/2009/08/'>August 2009</a></li> <li><a href='https://blog.jquery.com/2009/07/'>July 2009</a></li> <li><a href='https://blog.jquery.com/2009/06/'>June 2009</a></li> <li><a href='https://blog.jquery.com/2009/05/'>May 2009</a></li> <li><a href='https://blog.jquery.com/2009/04/'>April 2009</a></li> <li><a href='https://blog.jquery.com/2009/03/'>March 2009</a></li> <li><a href='https://blog.jquery.com/2009/02/'>February 2009</a></li> <li><a href='https://blog.jquery.com/2009/01/'>January 2009</a></li> <li><a href='https://blog.jquery.com/2008/12/'>December 2008</a></li> <li><a href='https://blog.jquery.com/2008/11/'>November 2008</a></li> <li><a href='https://blog.jquery.com/2008/10/'>October 2008</a></li> <li><a href='https://blog.jquery.com/2008/09/'>September 2008</a></li> <li><a href='https://blog.jquery.com/2008/08/'>August 2008</a></li> <li><a href='https://blog.jquery.com/2008/07/'>July 2008</a></li> <li><a href='https://blog.jquery.com/2008/06/'>June 2008</a></li> <li><a href='https://blog.jquery.com/2008/05/'>May 2008</a></li> <li><a href='https://blog.jquery.com/2008/03/'>March 2008</a></li> <li><a href='https://blog.jquery.com/2008/02/'>February 2008</a></li> <li><a href='https://blog.jquery.com/2008/01/'>January 2008</a></li> <li><a href='https://blog.jquery.com/2007/12/'>December 2007</a></li> <li><a href='https://blog.jquery.com/2007/11/'>November 2007</a></li> <li><a href='https://blog.jquery.com/2007/10/'>October 2007</a></li> <li><a href='https://blog.jquery.com/2007/09/'>September 2007</a></li> <li><a href='https://blog.jquery.com/2007/08/'>August 2007</a></li> <li><a href='https://blog.jquery.com/2007/07/'>July 2007</a></li> <li><a href='https://blog.jquery.com/2007/06/'>June 2007</a></li> <li><a href='https://blog.jquery.com/2007/05/'>May 2007</a></li> <li><a href='https://blog.jquery.com/2007/04/'>April 2007</a></li> <li><a href='https://blog.jquery.com/2007/03/'>March 2007</a></li> <li><a href='https://blog.jquery.com/2007/02/'>February 2007</a></li> <li><a href='https://blog.jquery.com/2007/01/'>January 2007</a></li> <li><a href='https://blog.jquery.com/2006/12/'>December 2006</a></li> <li><a href='https://blog.jquery.com/2006/11/'>November 2006</a></li> <li><a href='https://blog.jquery.com/2006/10/'>October 2006</a></li> <li><a href='https://blog.jquery.com/2006/09/'>September 2006</a></li> <li><a href='https://blog.jquery.com/2006/08/'>August 2006</a></li> <li><a href='https://blog.jquery.com/2006/07/'>July 2006</a></li> <li><a href='https://blog.jquery.com/2006/06/'>June 2006</a></li> <li><a href='https://blog.jquery.com/2006/05/'>May 2006</a></li> <li><a href='https://blog.jquery.com/2006/04/'>April 2006</a></li> <li><a href='https://blog.jquery.com/2006/03/'>March 2006</a></li> <li><a href='https://blog.jquery.com/2006/02/'>February 2006</a></li> <li><a href='https://blog.jquery.com/2006/01/'>January 2006</a></li> </ul> </aside> </div> </div> </div> </div> <footer class="clearfix simple"> <div class="constrain"> <div class="row"> <div class="six columns offset-by-three"> <h3><span>Books</span></h3> <ul class="books"> <li> <a href="http://www.packtpub.com/learning-jquery-with-simple-javascript-techniques-fourth-edition/book"> <img src="https://blog.jquery.com/wp-content/themes/jquery/content/books/learning-jquery-4th-ed.jpg" alt="Learning jQuery 4th Edition by Karl Swedberg and Jonathan Chaffer" width="92" height="114"> Learning jQuery Fourth Edition <cite>Karl Swedberg and Jonathan Chaffer</cite> </a> </li> <li> <a href="http://www.manning.com/derosa?a_aid=141d9491&a_bid=bdd5b7ad"> <img src="https://blog.jquery.com/wp-content/themes/jquery/content/books/jquery-in-action.jpg" alt="jQuery in Action by Bear Bibeault, Yehuda Katz, and Aurelio De Rosa" width="92" height="114"> jQuery in Action <cite>Bear Bibeault, Yehuda Katz, and Aurelio De Rosa</cite> </a> </li> <li> <a href="http://www.syncfusion.com/resources/techportal/ebooks/jquery?utm_medium=BizDev-jQuery.org0513"> <img src="https://blog.jquery.com/wp-content/themes/jquery/content/books/jquery-succinctly.jpg" alt="jQuery Succinctly by Cody Lindley" width="92" height="114"> jQuery Succinctly <cite>Cody Lindley</cite> </a> </li> </ul> </div> </div> <div id="legal"> <ul class="footer-site-links"> <li><a class="icon-pencil" href="http://learn.jquery.com/">Learning Center</a></li> <li><a class="icon-group" href="http://forum.jquery.com/">Forum</a></li> <li><a class="icon-wrench" href="http://api.jquery.com/">API</a></li> <li><a class="icon-twitter" href="http://twitter.com/jquery">Twitter</a></li> <li><a class="icon-comments" href="http://irc.jquery.org/">IRC</a></li> <li><a class="icon-github" href="https://github.com/jquery">GitHub</a></li> </ul> <p class="copyright"> Copyright 2024 <a href="https://jquery.org/team/">The jQuery Foundation</a>. <a href="https://jquery.org/license/">jQuery License</a> <span class="sponsor-line"><a href="http://digitalocean.com" rel="nofollow" class="do-link">Web hosting by Digital Ocean</a> | <a href="http://www.stackpath.com" rel="nofollow" class="sp-link">CDN by StackPath</a></span> </p> </div> </div> </footer> </body> </html>