{"id":186,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/pt\/jquery-4-0-0-o-que-muda-e-como-atualizar\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"jquery-4-0-0-o-que-muda-e-como-atualizar","status":"publish","type":"post","link":"https:\/\/helloblog.io\/pt\/jquery-4-0-0-o-que-muda-e-como-atualizar\/","title":{"rendered":"jQuery 4.0.0: o que muda na primeira major em quase 10 anos (e como atualizar com seguran\u00e7a)"},"content":{"rendered":"\n<p>No dia 14 de janeiro de 2006, o John Resig apresentou em Nova Iorque uma biblioteca JavaScript chamada jQuery. Vinte anos depois, o projeto celebra a data com o lan\u00e7amento final do <strong>jQuery 4.0.0<\/strong> &#8211; a primeira major release em quase uma d\u00e9cada, depois de um ciclo longo de desenvolvimento e v\u00e1rias pr\u00e9-releases.<\/p>\n\n\n\n<p>Este 4.0.0 vem com melhorias e moderniza\u00e7\u00f5es bem alinhadas com o que a web pede hoje: menos c\u00f3digo legado, mais compatibilidade com pr\u00e1ticas de seguran\u00e7a atuais (como CSP e Trusted Types), e uma base preparada para ferramentas modernas de build. Ao mesmo tempo, \u00e9 uma vers\u00e3o com <strong>breaking changes<\/strong>, ent\u00e3o faz sentido ler os pontos cr\u00edticos antes de trocar o 3.x no teu projeto.<\/p>\n\n\n\n<p>Para ajudar na migra\u00e7\u00e3o, o time disponibilizou um <strong>upgrade guide<\/strong> e uma nova release do <strong>jQuery Migrate plugin<\/strong> (um plugin pensado para detectar e mitigar incompatibilidades ao atualizar). Se encontrares problemas no upgrade, o caminho recomendado \u00e9 reportar no tracker oficial de issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onde obter o jQuery 4.0.0 (CDN e npm)<\/h2>\n\n\n\n<p>O jQuery 4.0.0 j\u00e1 est\u00e1 dispon\u00edvel no CDN oficial do projeto e no npm. Outros CDNs de terceiros tendem a disponibilizar em seguida, mas o calend\u00e1rio deles n\u00e3o \u00e9 controlado pelo projeto &#8211; por isso pode levar alguns dias.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Links diretos no CDN<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.min.js<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Instala\u00e7\u00e3o via npm<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>npm install jquery@4.0.0\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">npm<\/span><span style=\"color:#9ECBFF\"> install<\/span><span style=\"color:#9ECBFF\"> jquery@4.0.0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Breaking changes e decis\u00f5es de limpeza: o que o 4.0.0 removeu (e porqu\u00ea)<\/h2>\n\n\n\n<p>A filosofia desta major release \u00e9 bem clara: fazer mudan\u00e7as que o time j\u00e1 queria h\u00e1 anos, mas que n\u00e3o cabiam num patch\/minor. Isso inclui: remover c\u00f3digo legado, cortar APIs previamente deprecated, eliminar par\u00e2metros internos que estavam expostos em fun\u00e7\u00f5es p\u00fablicas sem estarem documentados, e abandonar comportamentos \u201cm\u00e1gicos\u201d que complicavam manuten\u00e7\u00e3o e previsibilidade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fim do suporte a IE < 11 (e redu\u00e7\u00e3o de suporte a browsers muito antigos)<\/h2>\n\n\n\n<p>O jQuery 4.0 remove suporte ao <strong>Internet Explorer 10 e anteriores<\/strong>. Uma d\u00favida comum \u00e9: por que n\u00e3o remover tamb\u00e9m o IE11? A resposta \u00e9 que o plano \u00e9 remover por etapas; o pr\u00f3ximo passo est\u00e1 previsto para ser lan\u00e7ado no <strong>jQuery 5.0<\/strong> (h\u00e1 refer\u00eancia expl\u00edcita a isso num PR do reposit\u00f3rio). Por agora, o corte \u00e9 do c\u00f3digo espec\u00edfico para IE antes do 11.<\/p>\n\n\n\n<p>Al\u00e9m do IE<11, tamb\u00e9m caiu suporte para outros browsers bem antigos: <strong>Edge Legacy<\/strong>, <strong>iOS anterior \u00e0s \u00faltimas 3 vers\u00f5es<\/strong>, <strong>Firefox anterior \u00e0s \u00faltimas 2 vers\u00f5es<\/strong> (com exce\u00e7\u00e3o do <strong>Firefox ESR<\/strong>) e <strong>Android Browser<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Compatibilidade pr\u00e1tica<\/h4>\n\n\n<p>Segundo o an\u00fancio, n\u00e3o devem ser necess\u00e1rias mudan\u00e7as do teu lado apenas por causa destes cortes de suporte. Mas se o teu produto ainda precisa cobrir algum desses browsers antigos, a recomenda\u00e7\u00e3o \u00e9 permanecer no <strong>jQuery 3.x<\/strong>.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Seguran\u00e7a moderna: Trusted Types e CSP (Content Security Policy)<\/h2>\n\n\n\n<p>Uma das melhorias mais relevantes do 4.0.0 \u00e9 o suporte a <strong>Trusted Types<\/strong>. Na pr\u00e1tica, isso garante que HTML encapsulado em <strong>TrustedHTML<\/strong> (a API do browser para reduzir XSS em sinks perigosos) possa ser passado como input para m\u00e9todos de manipula\u00e7\u00e3o do jQuery sem violar a diretiva <code>require-trusted-types-for<\/code> da <strong>Content Security Policy (CSP)<\/strong>.<\/p>\n\n\n\n<p>Em paralelo, o time tamb\u00e9m ajustou o comportamento do Ajax para reduzir erros de CSP: embora alguns requests j\u00e1 usassem tags <code>&lt;script&gt;<\/code> para manter atributos como <code>crossdomain<\/code>, agora <strong>a maioria dos requests ass\u00edncronos de scripts foi alterada para usar <code>&lt;script&gt;<\/code> tags<\/strong> &#8211; evitando problemas t\u00edpicos quando scripts inline s\u00e3o bloqueados por CSP.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Aten\u00e7\u00e3o a casos especiais no transporte de scripts<\/h4>\n\n\n<p>Ainda existem casos em que o jQuery usa XHR para requests ass\u00edncronos de scripts &#8211; por exemplo, quando a op\u00e7\u00e3o <code>&quot;headers&quot;<\/code> \u00e9 passada. A recomenda\u00e7\u00e3o no an\u00fancio \u00e9 usar <code>scriptAttrs<\/code> em vez de <code>headers<\/code> para esse tipo de necessidade, e o jQuery passa a usar <code>&lt;script&gt;<\/code> sempre que poss\u00edvel.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">O c\u00f3digo-fonte do jQuery migrou para ES modules (adeus AMD no source)<\/h2>\n\n\n\n<p>Um marco importante do 4.0.0 \u00e9 que o c\u00f3digo-fonte na branch <code>main<\/code> foi migrado de <strong>AMD<\/strong> (o formato muito associado ao RequireJS) para <strong>ES modules (ESM)<\/strong>.<\/p>\n\n\n\n<p>Historicamente, o source sempre foi publicado via npm e GitHub, mas n\u00e3o dava para import\u00e1-lo diretamente como m\u00f3dulos sem o <strong>RequireJS<\/strong>, que era a ferramenta de build escolhida pelo projeto. Agora o empacotamento usa <strong>Rollup<\/strong>, e os testes s\u00e3o executados separadamente tamb\u00e9m em cima dos ES modules.<\/p>\n\n\n\n<p>O resultado pr\u00e1tico \u00e9 que o jQuery fica mais compat\u00edvel com ferramentas modernas de build, workflows atuais e browsers modernos, inclusive com a op\u00e7\u00e3o de consumo via <code>&lt;script type=module&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">APIs deprecated removidas (e o que usar no lugar)<\/h2>\n\n\n\n<p>Como \u00e9 uma major release, foi o momento de remover fun\u00e7\u00f5es que j\u00e1 vinham marcadas como deprecated h\u00e1 v\u00e1rias vers\u00f5es &#8211; muitas delas porque eram pensadas para uso interno, ou porque hoje t\u00eam equivalentes nativos em todos os browsers suportados pelo jQuery 4.0.<\/p>\n\n\n\n<p>Lista de fun\u00e7\u00f5es removidas no 4.0.0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>jQuery.isArray<\/code><\/li>\n\n\n<li><code>jQuery.parseJSON<\/code><\/li>\n\n\n<li><code>jQuery.trim<\/code><\/li>\n\n\n<li><code>jQuery.type<\/code><\/li>\n\n\n<li><code>jQuery.now<\/code><\/li>\n\n\n<li><code>jQuery.isNumeric<\/code><\/li>\n\n\n<li><code>jQuery.isFunction<\/code><\/li>\n\n\n<li><code>jQuery.isWindow<\/code><\/li>\n\n\n<li><code>jQuery.camelCase<\/code><\/li>\n\n\n<li><code>jQuery.nodeName<\/code><\/li>\n\n\n<li><code>jQuery.cssNumber<\/code><\/li>\n\n\n<li><code>jQuery.cssProps<\/code><\/li>\n\n\n<li><code>jQuery.fx.interval<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>As substitui\u00e7\u00f5es recomendadas passam pelo que j\u00e1 usamos no JavaScript moderno: <code>Array.isArray()<\/code>, <code>JSON.parse()<\/code>, <code>String.prototype.trim()<\/code> e <code>Date.now()<\/code>, entre outras APIs nativas.<\/p>\n\n\n\n<p>Um detalhe interessante: a combina\u00e7\u00e3o da remo\u00e7\u00e3o dessas APIs deprecated com a elimina\u00e7\u00e3o de c\u00f3digo para IE antigo gerou uma <strong>redu\u00e7\u00e3o de mais de 3k bytes (gzipped)<\/strong> no tamanho final.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9todos internos removidos do prototype do jQuery: <code>push<\/code>, <code>sort<\/code> e <code>splice<\/code><\/h2>\n\n\n\n<p>Durante muito tempo, o prototype do jQuery exp\u00f4s m\u00e9todos de Array que n\u00e3o se comportavam como os restantes m\u00e9todos chainable do jQuery e eram pensados apenas para uso interno. Esses m\u00e9todos eram: <code>push<\/code>, <code>sort<\/code> e <code>splice<\/code>.<\/p>\n\n\n\n<p>No jQuery 4.0, eles foram removidos do prototype. Se tens algum c\u00f3digo que fazia coisas como <code>$elems.push(elem)<\/code>, a alternativa indicada \u00e9 chamar o m\u00e9todo nativo do Array explicitamente via <code>call<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Antes (3.x):\n\/\/ $elems.push( elem )\n\n\/\/ Depois (4.0):\n[].push.call( $elems, elem );\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ Antes (3.x):<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ $elems.push( elem )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Depois (4.0):<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[].push.<\/span><span style=\"color:#B392F0\">call<\/span><span style=\"color:#E1E4E8\">( $elems, elem );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ordem de eventos de focus\/blur agora segue a spec W3C<\/h2>\n\n\n\n<p>Este \u00e9 daqueles breaking changes que costuma passar despercebido at\u00e9 quebrar um fluxo de UI: durante anos, browsers divergiram na ordem de eventos de foco e desfoco (focusin, focusout, focus, blur). Com o tempo, os browsers suportados pelo jQuery 4.0 convergiram para uma ordem comum &#8211; mas diferente da ordem \u201cconsistente\u201d que o jQuery tinha escolhido no passado.<\/p>\n\n\n\n<p>A partir do jQuery 4.0, o jQuery <strong>deixa de sobrescrever o comportamento nativo<\/strong>. Assim, todos os browsers (exceto IE) seguem a especifica\u00e7\u00e3o atual da W3C, nesta ordem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>blur<\/li>\n\n\n<li>focusout<\/li>\n\n\n<li>focus<\/li>\n\n\n<li>focusin<\/li>\n\n<\/ol>\n\n\n\n<p>Nas vers\u00f5es anteriores, a ordem do jQuery era: <strong>focusout, blur, focusin, focus<\/strong>. Um detalhe curioso apontado no an\u00fancio: o \u00fanico browser que seguia a spec antiga (antes da atualiza\u00e7\u00e3o de 2023) era o <strong>Internet Explorer<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Slim build atualizado: ainda menor (e sem Deferreds\/Callbacks)<\/h2>\n\n\n\n<p>O build \u201cslim\u201d no jQuery 4.0.0 encolheu ainda mais: <strong>Deferreds<\/strong> e <strong>Callbacks<\/strong> foram removidos, ficando por volta de <strong>19.5k bytes gzipped<\/strong>.<\/p>\n\n\n\n<p>A justificativa \u00e9 pr\u00e1tica: Deferreds j\u00e1 suportavam h\u00e1 muito o padr\u00e3o <strong>Promises\/A+<\/strong>, ent\u00e3o em grande parte dos casos d\u00e1 para migrar para <strong>Promises nativas<\/strong>, que est\u00e3o dispon\u00edveis em todos os browsers suportados pelo jQuery 4.0 &#8211; com exce\u00e7\u00e3o do <strong>IE11<\/strong>.<\/p>\n\n\n\n<p>Deferreds t\u00eam alguns recursos extra que as Promises nativas n\u00e3o cobrem, mas a expectativa do projeto \u00e9 que a maior parte do uso possa ser migrada para m\u00e9todos de Promise.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Se ainda precisas de IE11<\/h4>\n\n\n<p>Se o teu alvo inclui IE11, o an\u00fancio sugere usar o build completo do jQuery (main build) ou ent\u00e3o adicionar um polyfill de Promises nativas.<\/p>\n\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Links do slim build<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.min.js<\/li>\n\n<\/ul>\n\n\n\n<p>O an\u00fancio tamb\u00e9m menciona que estas atualiza\u00e7\u00f5es j\u00e1 est\u00e3o dispon\u00edveis como vers\u00f5es atuais no npm e no Bower, e que h\u00e1 uma p\u00e1gina com todas as formas de obter o jQuery em https:\/\/jquery.com\/download\/.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como atualizar sem dor: upgrade guide, jQuery Migrate e checklist<\/h2>\n\n\n\n<p>O time do jQuery publicou dois recursos-chave para atravessar o 3.x \u2192 4.0 com menos fric\u00e7\u00e3o: o <strong>Upgrade Guide<\/strong> e a release do <strong>jQuery Migrate plugin<\/strong>. A expectativa oficial \u00e9 que a maioria dos projetos consiga atualizar com mudan\u00e7as m\u00ednimas, mas vale tratar o upgrade como uma pequena migra\u00e7\u00e3o.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>L\u00ea o guia oficial de upgrade: https:\/\/jquery.com\/upgrade-guide\/4.0\/<\/li>\n\n\n<li>Inclui o jQuery Migrate no ambiente de teste\/homologa\u00e7\u00e3o para detectar padr\u00f5es quebrados: https:\/\/github.com\/jquery\/jquery-migrate\/<\/li>\n\n\n<li>Valida depend\u00eancias: plugins e temas (ou bundles antigos) podem depender de APIs removidas como <code>jQuery.trim<\/code> ou de comportamentos \u201cm\u00e1gicos\u201d.<\/li>\n\n\n<li>Rev\u00ea handlers de focus\/blur se tens componentes que dependem da ordem dos eventos (form wizards, m\u00e1scaras, valida\u00e7\u00e3o on-focus, etc.).<\/li>\n\n\n<li>Procura usos de <code>$collection.push\/sort\/splice<\/code> e substitui por chamadas expl\u00edcitas ao Array.<\/li>\n\n\n<li>Se usas Ajax para carregar scripts, confirma se est\u00e1s a passar <code>headers<\/code> nesse transporte; quando aplic\u00e1vel, muda para <code>scriptAttrs<\/code> conforme a orienta\u00e7\u00e3o do an\u00fancio.<\/li>\n\n\n<li>Se a tua pol\u00edtica de seguran\u00e7a usa CSP estrita e\/ou <code>require-trusted-types-for<\/code>, testa fluxos de <code>.html()<\/code>, <code>.append()<\/code> e afins com Trusted Types no browser alvo.<\/li>\n\n\n<li>Se precisas mesmo de browsers muito antigos (IE10-, Edge Legacy, Android Browser, etc.), considera manter o jQuery 3.x no produto que os atende.<\/li>\n\n<\/ol>\n\n\n\n<p>Se encontrares um bug real ao atualizar, o caminho recomendado \u00e9 abrir issue em https:\/\/github.com\/jquery\/jquery\/issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Changelog completo e destaques por \u00e1rea<\/h2>\n\n\n\n<p>Para quem gosta de ir ao detalhe, o projeto disponibilizou o diff completo entre 3.7.1 e 4.0.0 aqui: https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1&#8230;4.0.0. A seguir, ficam os itens do changelog organizados por \u00e1rea (conforme publicado).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajax<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Don&#8217;t treat array data as binary (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/992a1911d0b6195012edc25fd5a48810d4be64b5\">992a1911<\/a>)<\/li>\n\n\n<li>Allow <code>processData: true<\/code> even for binary data (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ce264e0789116e37fe371503537a217c038dfae8\">ce264e07<\/a>)<\/li>\n\n\n<li>Support binary data (including FormData) (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a7ed9a7b6364273b1b964fd2cf9691dec2cbec6b\">a7ed9a7b<\/a>)<\/li>\n\n\n<li>Support <code>headers<\/code> 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>\n\n\n<li>Support <code>null<\/code> as success functions in <code>jQuery.get<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/4989\">#4989<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/74978b7e892537559850cda7332bdab8106e6354\">74978b7e<\/a>)<\/li>\n\n\n<li>Don&#8217;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>\n\n\n<li>Make responseJSON work for erroneous same-domain JSONP requests (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/68b4ec59c8f290d680e9db4bc980655660817dd1\">68b4ec59<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<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>\n\n\n<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>\n\n\n<li>Deprecate AJAX event aliases, inline event\/alias into deprecated (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/23d53928f383b0e7440bf4b08b7524e6af232fad\">23d53928<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Attributes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<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>\n\n\n<li>Shave off a couple of bytes (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/b40a4807b604efbde51faf075d11e25441af1990\">b40a4807<\/a>)<\/li>\n\n\n<li>Don&#8217;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>\n\n\n<li>Drop the <code>toggleClass(boolean|undefined)<\/code> signature (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/3388\">#3388<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a4421101fd6d9d7b0550210f8e8690641733dd9a\">a4421101<\/a>)<\/li>\n\n\n<li>Refactor val(): don&#8217;t strip carriage return, isolate IE workarounds (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ff2819911da6cbbed5ee42c35d695240f06e65e3\">ff281991<\/a>)<\/li>\n\n\n<li>Don&#8217;t set the type attr hook at all outside of IE (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/9e66fe9acf0ef27681f5a21149fc61678f791641\">9e66fe9a<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CSS<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Fix dimensions of table <code>&lt;col&gt;<\/code> elements (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5628\">#5628<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/eca2a56457e1c40c071aeb3ac87efeb8bbb8013e\">eca2a564<\/a>)<\/li>\n\n\n<li>Drop the cache in finalPropName (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/640d5825df5ff223560c5690f1a268681c32f9fa\">640d5825<\/a>)<\/li>\n\n\n<li>Tests: Fix tests &#038; 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>\n\n\n<li>Fix reliableTrDimensions support test for initially hidden iframes (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/b1e66a5faaf46ffcbcc27c79a9a224aaf851a987\">b1e66a5f<\/a>)<\/li>\n\n\n<li>Selector: Align with 3.x, remove the outer <code>selector.js<\/code> wrapper (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/53cf7244da2a2040333335c36e435b1c12efdff9\">53cf7244<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Make <code>offsetHeight( true )<\/code>, 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>\n\n\n<li>Return <code>undefined<\/code> for whitespace-only CSS variable values (#5120) (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/7eb0019640a5856c42b451551eb7f995d913eba9\">7eb00196<\/a>)<\/li>\n\n\n<li>Don&#8217;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>\n\n\n<li>Skip falsy values in <code>addClass( array )<\/code>, 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>\n\n\n<li>Justify use of rtrim on CSS property values (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/655c0ed5e204b1f6427e09d615a49586a7bc84eb\">655c0ed5<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Include <code>show<\/code>, <code>hide<\/code> &#038; <code>toggle<\/code> methods in the jQuery slim build (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/297d18dd13f7b810ea5a4afeefa4cb15d9e16e16\">297d18dd<\/a>)<\/li>\n\n\n<li>Remove the opacity CSS hook (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/865469f5e60f55feb28469bb0a7526dd22f04b4e\">865469f5<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Don&#8217;t automatically add &#8220;px&#8221; 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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Core<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Remove obsolete workarounds, update support comments (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e2fe97b7f15cf5ee2e44566b381f7bf214e491b1\">e2fe97b7<\/a>)<\/li>\n\n\n<li>Switch <code>$.parseHTML<\/code> from <code>document.implementation<\/code> to <code>DOMParser<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/0e123509d529456ddf130abb97e6266b53f62c50\">0e123509<\/a>)<\/li>\n\n\n<li>Fix the exports setup to make bundlers work with ESM &#038; CommonJS (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5416\">#5416<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/60f11b58bfeece6b6d0189d7d19b61a4e1e61139\">60f11b58<\/a>)<\/li>\n\n\n<li>Add more info about named exports (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/5f869590924b7dea6a16d176b18700939f4b5290\">5f869590<\/a>)<\/li>\n\n\n<li>Simplify code post browser support reduction (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/93ca49e6d1ac23fee33b3bc3b7f4d93dd1a25cb7\">93ca49e6<\/a>)<\/li>\n\n\n<li>Move the factory to separate exports (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/46f6e3da796ee9d28c7c1428793b72d66bcbb0b7\">46f6e3da<\/a>)<\/li>\n\n\n<li>Use named exports in <code>src\/<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5262\">#5262<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/f75daab09102a4dd5107deadb55d4a169f86254a\">f75daab0<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Selector: Move jQuery.contains from the selector to the core module (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/024d87195ac46690023e2b0b308d4406a8a5a27e\">024d8719<\/a>)<\/li>\n\n\n<li>Drop the root parameter of jQuery.fn.init (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/d2436df36a4b2ef556907e734a90771f0dbdbcaf\">d2436df3<\/a>)<\/li>\n\n\n<li>Don&#8217;t rely on splice being present on input (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/9c6f64c7b51d50e334ef1183e2937ad77c0a68b0\">9c6f64c7<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<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>\n\n\n<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>\n\n\n<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>\n\n\n<li>Exclude callbacks &#038; deferred modules in the slim build as well (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/fbc44f52fe76e1b601da76a1d7f8ef27884c06da\">fbc44f52<\/a>)<\/li>\n\n\n<li>Migrate from AMD to ES modules \ud83c\udf89 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/d0ce00cdfa680f1f0c38460bc51ea14079ae8b07\">d0ce00cd<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Remove private copies of push, sort &#038; splice from the jQuery prototype (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/b59107f5d7451ac16a7c8755128719be6ec8bf12\">b59107f5<\/a>)<\/li>\n\n\n<li>Implement .even() &#038; .odd() to replace POS :even &#038; :odd (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/78420d427cf3734d9264405fcbe08b76be182a95\">78420d42<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<li>Drop support for IE <11, iOS <11, Firefox <65, Android Browser &#038; 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>\n\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Data<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Refactor to reduce size (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/805cdb43fd02c3a5783c06b5ec2c9519be0682ab\">805cdb43<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Separate data &#038; 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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Deferred<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Rename <code>getStackHook<\/code> to <code>getErrorHook<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5201\">#5201<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/258ca1ec6a373f85f7849308c967b7e6a993e6e7\">258ca1ec<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Rename master to primary (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a32cf6324f8f2190e66a687e94be9687ebf840b7\">a32cf632<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Deprecated<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Define <code>.hover()<\/code> using non-deprecated methods (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/fd6ffc5eb2c12562f2656d2f33865448420252be\">fd6ffc5e<\/a>)<\/li>\n\n\n<li>Remove jQuery.trim (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/0b676ae12d20721e2df6f6f32f37f7302f8805bf\">0b676ae1<\/a>)<\/li>\n\n\n<li>Fix AMD parameter order (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/f810080e8e92278bb5288cba7cc0169481471780\">f810080e<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dimensions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Docs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Fix some minor issues in comments (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e4d4dd81bfb0c27a9c557746035738319253a30c\">e4d4dd81<\/a>)<\/li>\n\n\n<li>update herodevs link in README (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5695\">#5695<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/093e63f92a5843c2d73fd953454cc6307fe8025c\">093e63f9<\/a>)<\/li>\n\n\n<li>Align CONTRIBUTING.md with <code>3.x-stable<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/d92810614b53270a8f014db14022887ee3383fd5\">d9281061<\/a>)<\/li>\n\n\n<li>Update CONTRIBUTING.md (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/4ef25b0de4a847f14ba2f88e309eaf759e035d78\">4ef25b0d<\/a>)<\/li>\n\n\n<li>add version support section to README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/cbc2bc1fd37bb6af5d2c60cf666265c4d438200f\">cbc2bc1f<\/a>)<\/li>\n\n\n<li>Update remaining HTTP URLs to HTTPS (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/7cdd8374234b77a3c70dd511a1b06066afb146bb\">7cdd8374<\/a>)<\/li>\n\n\n<li>Fix module links in the package README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ace646f6e83e653f666ba715c200739f1cbdba52\">ace646f6<\/a>)<\/li>\n\n\n<li>update watch task in CONTRIBUTING.md (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/77d6ad7172db3ae11573df7b322d410b161eb43e\">77d6ad71<\/a>)<\/li>\n\n\n<li>Fix typos found by codespell (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/620870a1af5287d29c77ec6d5f973116b23793a7\">620870a1<\/a>)<\/li>\n\n\n<li>remove stale gitter badge from readme (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/67cb1af7740a956e150e8d93266c4e601f55e8a4\">67cb1af7<\/a>)<\/li>\n\n\n<li>Remove the &#8220;Grunt build&#8221; section from the PR template (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/988a56847de301ce18a653f84b07c5af432a269f\">988a5684<\/a>)<\/li>\n\n\n<li>Remove stale badge from README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/bcd9c2bc3ddaa04f89f550681ca9c1ec5efc4328\">bcd9c2bc<\/a>)<\/li>\n\n\n<li>Update the README of the published package (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/edccabf10d37b57cbd4eeebc44f3acb67cb2739c\">edccabf1<\/a>)<\/li>\n\n\n<li>Remove git.io from a GitHub Actions comment (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/016872ffe03ab9107b1bc62fae674a4809c3b23f\">016872ff<\/a>)<\/li>\n\n\n<li>Update webpack website in README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/01819bc3bcc44282e5bb9301c3478d837d1e5152\">01819bc3<\/a>)<\/li>\n\n\n<li>add link to patchwelcome and help wanted issues (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/924b7ce825962bfe4c16e02eb411c7f66ee75a55\">924b7ce8<\/a>)<\/li>\n\n\n<li>add link to preview the new CLAs (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/683ceb8ff067ac53a7cb464ba1ec3f88e353e3f5\">683ceb8f<\/a>)<\/li>\n\n\n<li>Fix incorrect <code>trac-NUMBER<\/code> references (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/eb9ceb2facbeff1c66a41824bd0ac0c56d0c5c62\">eb9ceb2f<\/a>)<\/li>\n\n\n<li>remove expired links from old jquery source (#4997) (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ed066ac70270b4bb20b5717501d2d268ef144bd3\">ed066ac7<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Replace <code>#NUMBER<\/code> Trac issue references with <code>trac-NUMBER<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/5d5ea015114092c157311c4948f7cc3d8c8e7f8a\">5d5ea015<\/a>)<\/li>\n\n\n<li>Update the URL to the latest jQuery build in CONTRIBUTING.md (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/9bdb16cd19097da67950a707baac3980bda873f3\">9bdb16cd<\/a>)<\/li>\n\n\n<li>Remove the CLA checkbox in the pull request template (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e124893132d7a979d7987f978e968a1f889348b6\">e1248931<\/a>)<\/li>\n\n\n<li>update irc to Libera and fix LAMP dead link (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/175db73ec7938e774d9e93d3afdfb35a24466b47\">175db73e<\/a>)<\/li>\n\n\n<li>Update Frequently Reported Issues in the GitHub issue template (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/7a6fae6a7e51ae30a9f3177e8639fbf523ed0915\">7a6fae6a<\/a>)<\/li>\n\n\n<li>Change JS Foundation mentions to OpenJS Foundation (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/11611967adf2bd9ff4304132f917629ec1134049\">11611967<\/a>)<\/li>\n\n\n<li>add SECURITY.md, show security email address (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/2ffe54ca53b4ba2de2012f83c3faf262c1003af9\">2ffe54ca<\/a>)<\/li>\n\n\n<li>Fix typos (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/1a7332ce83cdee7d6cd9d45c2a4b83067f53f14b\">1a7332ce<\/a>)<\/li>\n\n\n<li>Update the link to the jsdom repository (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a62309e01b3c76d2b73560ca666c454b7bbfcb77\">a62309e0<\/a>)<\/li>\n\n\n<li>Use https for hyperlinks in README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/73415da25d964ee31ec1804d55f5af0199a1378e\">73415da2<\/a>)<\/li>\n\n\n<li>Remove a mention of the event\/alias.js module from README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3edfa1bcdc50bca41ac58b2642b12f3feee03a3b\">3edfa1bc<\/a>)<\/li>\n\n\n<li>Update links to EdgeHTML issues to go through Web Archive (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/1dad1185e0b2ca2a13bf411558eda75fb2d4da88\">1dad1185<\/a>)<\/li>\n\n\n<li>direct users to GitHub docs for cloning the repo (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/f1c16de29689d2cfaf629f00d682148e99753509\">f1c16de2<\/a>)<\/li>\n\n\n<li>Change OS X to macOS in README (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/5a3e0664d261422f11a78faaf101d70c73b3a5a8\">5a3e0664<\/a>)<\/li>\n\n\n<li>Update most URLs to HTTPS (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/f09d92100ffff6208211b200ed0cdc39bfd17fc3\">f09d9210<\/a>)<\/li>\n\n\n<li>Convert link to Homebrew from HTTP to HTTPS (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e0022f23144fd1dc6db86a5d8c18af47bc14f0f3\">e0022f23<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Effect<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Effects<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Remove jQuery.fx.interval (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/6c2c7362fb18d3df7c2a7b13715c2763645acfcb\">6c2c7362<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Event<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Use <code>.preventDefault()<\/code> in beforeunload (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/7c123dec4b96e7c3ce5f5a78e828c8aa335bea98\">7c123dec<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Avoid collisions between jQuery.event.special &#038; Object.prototype (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/bcaeb000b777c018ad5d18e01be5060caa8cb158\">bcaeb000<\/a>)<\/li>\n\n\n<li>Simplify the check for saved data in leverageNative (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/dfe212d5a1eed6b4a67d1cbd04ece09bbac33699\">dfe212d5<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<li>Don&#8217;t break focus triggering after <code>.on(focus).off(focus)<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/4867\">#4867<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e539bac79e666bba95bba86d690b4e609dca2286\">e539bac7<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Don&#8217;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>\n\n\n<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>\n\n\n<li>remove jQuery.event.global (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/18db87172cffbe48b92e30b70249e304863a70f9\">18db8717<\/a>)<\/li>\n\n\n<li>Only attach events to objects that accept data &#8212; 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>\n\n\n<li>Stop shimming focusin &#038; 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>\n\n\n<li>Prevent leverageNative from registering duplicate dummy handlers (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/eb6c0a7c97b1b3cf00144de12d945c9c569f935c\">eb6c0a7c<\/a>)<\/li>\n\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Manipulation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Make jQuery.cleanData not skip elements during cleanup (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5214\">#5214<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3cad5c435aa2333c39baa55a8bceb2b6bf1e2721\">3cad5c43<\/a>)<\/li>\n\n\n<li>Generalize a test to support IE (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/88690ebfc8b5ef8b1e444326c664b590ecc0b888\">88690ebf<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Extract domManip to a separate file (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ee6e874075ba1fcd8f9e62cd1ee5c04f6518b6d6\">ee6e8740<\/a>)<\/li>\n\n\n<li>Don&#8217;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>\n\n\n<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>\n\n\n<li>Avoid concatenating strings in buildFragment (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/9c98e4e86eda857ee063bc48adbc1a11bb5506ee\">9c98e4e8<\/a>)<\/li>\n\n\n<li>Make jQuery.htmlPrefilter an identity function (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/90fed4b453a5becdb7f173d9e3c1492390a1441f\">90fed4b4<\/a>)<\/li>\n\n\n<li>Selector: Use the nodeName util where possible to save size (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/4504fc3d722dd029d861cb47aa65a5edc651c4d3\">4504fc3d<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Offset<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Increase search depth when finding the &#8216;real&#8217; offset parent (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/556eaf4a193287c306d163635cbb5f5c95a22a84\">556eaf4a<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Release<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>4.0.0 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/4f2fae08f23b54ce09322e62e73cce6161b8d3cb\">4f2fae08<\/a>)<\/li>\n\n\n<li>remove dist files from main branch (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/c838cfb5bb0c6cd17cfaa1dd83aca8d20589de99\">c838cfb5<\/a>)<\/li>\n\n\n<li>4.0.0-rc.2 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/97525193735ed32c332f0dbaf2f782df8b1b949b\">97525193<\/a>)<\/li>\n\n\n<li>Update AUTHORS.txt (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/c128d5d8a8fd9e9b3dcd3efa493e71f6a1649bd8\">c128d5d8<\/a>)<\/li>\n\n\n<li>Fix release issues uncovered during the 4.0.0-rc.1 release (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a5b0c4318df748e5a0fe27d23820c60029d26b90\">a5b0c431<\/a>)<\/li>\n\n\n<li>remove dist files from main branch (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/9d06c6dd6f84bb0ae49e7c7445282ebb93b7b226\">9d06c6dd<\/a>)<\/li>\n\n\n<li>4.0.0-rc.1 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/586182f35e818c318046dac1cbaa31ee7a07ee21\">586182f3<\/a>)<\/li>\n\n\n<li>Run <code>npm publish<\/code> in the post-release phase (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ff1f0eaafd0dbcd4c063c3c557d9cee0a461f89d\">ff1f0eaa<\/a>)<\/li>\n\n\n<li>Only run browserless tests during the release (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/fb5ab0f546e0e25ccb5feb3d51ca2ea743b06efc\">fb5ab0f5<\/a>)<\/li>\n\n\n<li>Temporarily disable running tests on release (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3f79644b72e928c529febc1aaee081a6c4b96be3\">3f79644b<\/a>)<\/li>\n\n\n<li>publish tmp\/release\/dist folder when releasing (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5658\">#5658<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/a865212dea22d44bf2bea3e2c618c4a25c63c6a6\">a865212d<\/a>)<\/li>\n\n\n<li>correct build date in verification; other improvements (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/53ad94f319930a5bf8cb9bd935ebd4e028741903\">53ad94f3<\/a>)<\/li>\n\n\n<li>remove dist files from main branch (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/be048a027d0581746f71df7c8eb3ce1d9bd10a40\">be048a02<\/a>)<\/li>\n\n\n<li>4.0.0-beta.2 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/51fffe9f7395f86fb24c59115c9b98855c39fc07\">51fffe9f<\/a>)<\/li>\n\n\n<li>ensure builds have the proper version (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3e612aeeb3821c657989e67b43c9b715f5cd32e2\">3e612aee<\/a>)<\/li>\n\n\n<li>set preReleaseBase in config file (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/1fa8df5dbd5d84cf55882a38eb6e571abd0aa938\">1fa8df5d<\/a>)<\/li>\n\n\n<li>fix running pre\/post release scripts in windows (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/5518b2da1816b379b573abc55ba92f02776a3486\">5518b2da<\/a>)<\/li>\n\n\n<li>update AUTHORS.txt (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/862e7a1882f3f737db7dde1b5ecda9766d61694a\">862e7a18<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<li>use buildDefaultFiles directly and pass version (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/b507c8648f701acd1c48b3c38054ad38d76fd1ca\">b507c864<\/a>)<\/li>\n\n\n<li>copy dist-module folder as well (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/63767650b5b171b4671304fd2bb2f2890431929f\">63767650<\/a>)<\/li>\n\n\n<li>only published versioned files to cdn (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3a0ca684eb21d64a13d7591ce1891b1990e0339c\">3a0ca684<\/a>)<\/li>\n\n\n<li>remove scripts and dev deps from dist package.json (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/7eac932da7177104546abef595adf4429eb829b3\">7eac932d<\/a>)<\/li>\n\n\n<li>update build command in Release.generateArtifacts (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/3b963a21662061e0f39ad90f146e73e2223c2b86\">3b963a21<\/a>)<\/li>\n\n\n<li>add support for md5 sums in windows (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/f088c36631df3d5dc98408debd147ea5d3618557\">f088c366<\/a>)<\/li>\n\n\n<li>remove the need to install grunt globally (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/b2bbaa36d4d37bd48f954ed3cdbd50d3461a523d\">b2bbaa36<\/a>)<\/li>\n\n\n<li>upgrade release dependencies (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/967af73203378db0cc3637adee85c442e246e05a\">967af732<\/a>)<\/li>\n\n\n<li>Remove an unused chalk dependency (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/bfb6897c558dfdccff7ac5fc377b08e806525be3\">bfb6897c<\/a>)<\/li>\n\n\n<li>Use an in-repository dist README fixture (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/358b769a00c3a09a8ec621b8dcb2d5e31b7da69a\">358b769a<\/a>)<\/li>\n\n\n<li>Update AUTHORS.txt (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/1b74660f730d34bf728094c33080ff406427f41e\">1b74660f<\/a>)<\/li>\n\n\n<li>update AUTHORS.txt (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/cf9fe0f6a104a0f527c7c3f441485c19e2b19c69\">cf9fe0f6<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Selector<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Remove the workaround for <code>:has<\/code>; test both on iPhone &#038; iPad (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/65e35450c9954173dc1ddd3576242a913d8efb88\">65e35450<\/a>)<\/li>\n\n\n<li>Properly deprecate <code>jQuery.expr[ &quot;:&quot; ]<\/code>\/<code>jQuery.expr.filters<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/329661fd538a07993a2fcfa2a75fdd7f5667f86c\">329661fd<\/a>)<\/li>\n\n\n<li>Make <code>selector.js<\/code> module depend on <code>attributes\/attr.js<\/code> (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5379\">#5379<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e06ff08849057cd099365bf43598c8952fe9956d\">e06ff088<\/a>)<\/li>\n\n\n<li>Eliminate <code>selector.js<\/code> depenencies from various modules (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/e8b7db4b0f1e1b8e08578641b30a92b955ccc4ec\">e8b7db4b<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Stop relying on CSS.supports( &#8220;selector(&#8230;)&#8221; ) (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5194\">#5194<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/68aa2ef7571e2d9f91fad1aa9e5f956c04dc9ee9\">68aa2ef7<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Make selector lists work with <code>qSA<\/code> again (<a href=\"https:\/\/github.com\/jquery\/jquery\/issues\/5177\">#5177<\/a>, <a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/09d988b774e7ff4acfb69c0cde2dab373559aaca\">09d988b7<\/a>)<\/li>\n\n\n<li>Implement the <code>uniqueSort<\/code> 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>\n\n\n<li>Re-introduce selector-native.js (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/4c1171f2ed62584211250df0af8302d34c04621a\">4c1171f2<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Drop support for legacy pseudos, test custom pseudos (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/8c7da22caeae8c2c3f7e9869d5f47414669f106c\">8c7da22c<\/a>)<\/li>\n\n\n<li>Use jQuery <code>:has<\/code> if <code>CSS.supports(selector(...))<\/code> 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>\n\n\n<li>Remove the &#8220;a:enabled&#8221; workaround for Chrome <=77 (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/c1ee33aded44051b8f1288b59d2efdc68d0413cc\">c1ee33ad<\/a>)<\/li>\n\n\n<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>\n\n\n<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>\n\n\n<li>Add a test for throwing on post-comma invalid selectors (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/6eee5f7f181f9ebf5aa428e96356667e3cf7ddbd\">6eee5f7f<\/a>)<\/li>\n\n\n<li>Make selectors with leading combinators use qSA again (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ed66d5a22b37425abf5b63c361f91340de89c994\">ed66d5a2<\/a>)<\/li>\n\n\n<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>\n\n\n<li>reduce size, simplify setDocument (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/29a9544a4fb743491a42f827a6cf8627b7b99e0f\">29a9544a<\/a>)<\/li>\n\n\n<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>\n\n\n<li>Bring back querySelectorAll shortcut usage (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/cef4b73179b8d2a38cfd5e0730111cc80518311a\">cef4b731<\/a>)<\/li>\n\n\n<li>Inline Sizzle into the selector module (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/47835965bd100a3661d8299d8b769ceeb8b6ce48\">47835965<\/a>)<\/li>\n\n\n<li>Port Sizzle tests to jQuery (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/79b74e043a4ee737d44a95094ff1184e40bd5b16\">79b74e04<\/a>)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Support<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<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>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Traversing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Fix <code>contents()<\/code> on <code>&lt;object&gt;<\/code>s with children in IE (<a href=\"https:\/\/github.com\/jquery\/jquery\/commit\/ccbd6b93fd02c3a5783c06b5ec2c9519be0682ab\">ccbd6b93<\/a>)<\/li>\n\n\n<li>Fix <code>contents()<\/code> on <code>&lt;object&gt;<\/code>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>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">20 anos de jQuery: o reencontro do time<\/h2>\n\n\n\n<p>O an\u00fancio tamb\u00e9m marca o anivers\u00e1rio de 20 anos do projeto e menciona um reencontro em Dallas com v\u00e1rias pessoas que contribu\u00edram ao longo do tempo &#8211; incluindo a participa\u00e7\u00e3o do John Resig por Zoom. A release foi publicada enquanto estavam juntos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1804\" height=\"1359\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited.jpeg\" alt=\"Foto de grupo do reencontro de 20 anos do jQuery\" class=\"wp-image-185\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited.jpeg 1804w, https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited-300x226.jpeg 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited-1024x771.jpeg 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited-768x579.jpeg 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited-1536x1157.jpeg 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/9\/2026\/01\/jquery-reunion-group-edited-400x301.jpeg 400w\" sizes=\"auto, (max-width: 1804px) 100vw, 1804px\" \/><figcaption class=\"wp-element-caption\">. \u2014 <em>Forr\u00e1s: blog.jquery.com<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Resumo do que interessa para quem mant\u00e9m projetos (incluindo WordPress)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Se tens depend\u00eancia de browsers antigos, o recado \u00e9 direto: <strong>jQuery 3.x<\/strong> continua a ser a linha adequada.<\/li>\n\n\n<li>Para ambientes modernos, o 4.0.0 simplifica o core, melhora integra\u00e7\u00e3o com <strong>CSP\/Trusted Types<\/strong> e aproxima o projeto das ferramentas atuais com <strong>ES modules<\/strong>.<\/li>\n\n\n<li>Os principais pontos de quebra tendem a aparecer em: APIs removidas (ex.: <code>jQuery.trim<\/code>), ordem de eventos de foco, e usos acidentais de m\u00e9todos de Array no prototype do jQuery.<\/li>\n\n\n<li>Slim build ficou menor e agora elimina Deferreds\/Callbacks &#8211; \u00f3timo para quem j\u00e1 est\u00e1 100% em Promises nativas, mas exige cuidado se ainda existe requisito de IE11.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Refer\u00eancias \/ Fontes<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.jquery.com\/2026\/01\/17\/jquery-4-0-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 4.0.0<\/a><\/li><li><a href=\"https:\/\/jquery.com\/upgrade-guide\/4.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Upgrade Guide 4.0<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery-migrate\/\" target=\"_blank\" rel=\"noopener noreferrer\">jquery\/jquery-migrate<\/a><\/li><li><a href=\"https:\/\/jquery.com\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery download<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\" target=\"_blank\" rel=\"noopener noreferrer\">Full changelog: 4.0.0<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML\" target=\"_blank\" rel=\"noopener noreferrer\">TrustedHTML &#8211; MDN Web Docs<\/a><\/li><li><a href=\"https:\/\/twitter.com\/kkotowicz\/status\/1445713282128515074\" target=\"_blank\" rel=\"noopener noreferrer\">Trusted Types (tweet reference)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\" target=\"_blank\" rel=\"noopener noreferrer\">PR: switch most asynchronous script requests to use &lt;script&gt; tags<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/5077\" target=\"_blank\" rel=\"noopener noreferrer\">PR: planned next step released in jQuery 5.0<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">Report issues<\/a><\/li><li><a href=\"https:\/\/promisesaplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Promises\/A+<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4541\" target=\"_blank\" rel=\"noopener noreferrer\">PR: migrate from AMD to ES modules<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/docs\/whyamd.html\" target=\"_blank\" rel=\"noopener noreferrer\">AMD (Why AMD?)<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">RequireJS<\/a><\/li><li><a href=\"https:\/\/rollupjs.org\/introduction\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rollup introduction<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>O jQuery chegou ao 4.0.0 com limpeza de legado, mudan\u00e7as compat\u00edveis com o ecossistema moderno (CSP, ES modules) e alguns breaking changes que vale mapear antes do upgrade.<\/p>\n","protected":false},"author":27,"featured_media":184,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[86,87,85,84,11],"class_list":["post-186","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linguagens-de-programacao","tag-csp","tag-es-modules","tag-javascript","tag-jquery","tag-seguranca"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/comments?post=186"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/posts\/186\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/media\/184"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/media?parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/categories?post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/pt\/wp-json\/wp\/v2\/tags?post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}