{"id":167,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/hr\/jquery-4-0-0-je-vani\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"jquery-4-0-0-je-vani","status":"publish","type":"post","link":"https:\/\/helloblog.io\/hr\/jquery-4-0-0-je-vani\/","title":{"rendered":"jQuery 4.0.0 je vani: 20 godina nakon prvog BarCamp demoa sti\u017ee najve\u0107i rez u gotovo desetlje\u0107u"},"content":{"rendered":"\n<p>Prije to\u010dno 20 godina (14. sije\u010dnja 2006.) John Resig je na BarCampu u New Yorku prvi put predstavio jQuery. Danas, nakon dugog ciklusa razvoja i vi\u0161e pre-release izdanja, ekipa je objavila <strong>finalni jQuery 4.0.0<\/strong>. Ovo je <strong>prvi major release u skoro 10 godina<\/strong>, donosi hrpu modernizacija, ali i nekoliko breaking changeova &#8211; dovoljno da upgrade nije \u201csamo bump verzije\u201d, ali (po najavi) za ve\u0107inu projekata ipak prolazi uz minimalne dorade.<\/p>\n\n\n\n<p>U pozadini je logika jasna: stvari koje su se godinama odga\u0111ale jer nisu mogle u patch\/minor release (rezanje legacy koda, uklanjanje deprecated API-ja, izbacivanje internih parametara koji nikad nisu bili dokumentirani, i ukidanje nekih \u201cmagijskih\u201d pona\u0161anja koja su bila prekomplicirana) napokon su do\u0161le na red.<\/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\">Prije nego krene\u0161 na upgrade<\/h4>\n\n\n<p>Slu\u017ebeni tim je pripremio <strong>upgrade guide<\/strong> i novu verziju <strong>jQuery Migrate<\/strong> plugina kako bi prijelaz bio lak\u0161i: https:\/\/jquery.com\/upgrade-guide\/4.0\/ i https:\/\/github.com\/jquery\/jquery-migrate\/. Ako naleti\u0161 na bug\/regresiju, issue tracker je na https:\/\/github.com\/jquery\/jquery\/issues.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Gdje je dostupno i kako ga povu\u0107i<\/h2>\n\n\n\n<p>Release je dostupan na <strong>slu\u017ebenom jQuery CDN-u<\/strong> i kroz <strong>npm<\/strong>. Tre\u0107i CDN-ovi \u0107e ga vjerojatno uskoro preuzeti, ali njihove rokove jQuery tim ne kontrolira pa je realno o\u010dekivati kratko ka\u0161njenje.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CDN linkovi (full build)<\/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\">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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Najve\u0107e promjene u jQuery 4.0.0 (\u0161to \u0107e te stvarno dota\u0107i)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) Izba\u010dena podr\u0161ka za IE<11 (IE10 i stariji)<\/h3>\n\n\n\n<p>jQuery 4.0 formalno <strong>ukida podr\u0161ku za IE 10 i starije<\/strong>. \u010cesto pitanje je: za\u0161to ne i IE11? Najava je da \u0107e to i\u0107i <strong>u fazama<\/strong>, a sljede\u0107i korak (ukidanje IE11) je planiran za <strong>jQuery 5.0<\/strong> (referenca: https:\/\/github.com\/jquery\/jquery\/pull\/5077). U 4.0 se konkretno re\u017ee kod koji je ciljano podr\u017eavao IE verzije starije od 11.<\/p>\n\n\n\n<p>Osim toga, ukinuta je podr\u0161ka i za druge vrlo stare browsere: <strong>Edge Legacy<\/strong>, <strong>iOS verzije starije od zadnje 3<\/strong>, <strong>Firefox stariji od zadnje 2 verzije<\/strong> (osim Firefox ESR-a), te <strong>Android Browser<\/strong>. Po poruci iz releasea, promjene na tvojoj strani ne bi trebale biti potrebne &#8211; osim ako stvarno mora\u0161 podr\u017eavati navedene browsere. U tom slu\u010daju ostani na <strong>jQuery 3.x<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2) Trusted Types i CSP: manje glavobolje u zaklju\u010danim okru\u017eenjima<\/h3>\n\n\n\n<p>jQuery 4.0 uvodi podr\u0161ku za <strong>Trusted Types<\/strong> (mehanizam u browserima koji poma\u017ee sprije\u010diti XSS kroz kontrolu \u201copasnih\u201d sinkova). Konkretno: HTML umotan u <strong>TrustedHTML<\/strong> (MDN: https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML) mo\u017ee se koristiti kao input za jQuery metode manipulacije DOM-om bez kr\u0161enja CSP direktive <code>require-trusted-types-for<\/code>.<\/p>\n\n\n\n<p>Paralelno s tim, tim je promijenio na\u010din na koji se rade async script requestovi kako bi se izbjegli CSP problemi: iako su neki AJAX requestovi ve\u0107 koristili <code>&lt;script&gt;<\/code> tagove radi atributa poput <code>crossdomain<\/code>, sada su <strong>uglavnom prebacili async script u\u010ditavanje na <code>&lt;script&gt;<\/code> tagove<\/strong> (PR: https:\/\/github.com\/jquery\/jquery\/pull\/4763) kako bi se izbjegle CSP gre\u0161ke povezane s inline scriptovima.<\/p>\n\n\n\n<p>I dalje postoje slu\u010dajevi gdje se za async script request koristi XHR &#8211; primjerice kada je proslije\u0111ena opcija <code>&quot;headers&quot;<\/code> (napomena iz releasea: umjesto toga koristi <code>scriptAttrs<\/code>). Ali kad god je mogu\u0107e, jQuery sada bira <code>&lt;script&gt;<\/code> element.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3) Izvorni kod migriran na ES modules (zbogom AMD\/RequireJS era)<\/h3>\n\n\n\n<p>Jedan od najbitnijih strate\u0161kih poteza je migracija jQuery sourcea na <code>main<\/code> branchu s <strong>AMD<\/strong> (obja\u0161njenje: https:\/\/requirejs.org\/docs\/whyamd.html) na <strong>ES modules<\/strong> (PR: https:\/\/github.com\/jquery\/jquery\/pull\/4541). jQuery source je godinama bio objavljivan na npm-u i GitHubu, ali ga se nije moglo direktno importati kao module bez <strong>RequireJS-a<\/strong> jer je RequireJS bio glavni build alat.<\/p>\n\n\n\n<p>Sada je packaging preba\u010den na <strong>Rollup<\/strong> (https:\/\/rollupjs.org\/introduction\/), testovi se vrte i nad ES modules varijantom, a rezultat je bolja kompatibilnost s modernim bundlerima, workflowima i browserima &#8211; uklju\u010duju\u0107i kori\u0161tenje kroz <code>&lt;script type=module&gt;<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) Uklonjeni deprecated API-ji (prebaci se na native ekvivalente)<\/h3>\n\n\n\n<p>jQuery 4.0 uklanja funkcije koje su ve\u0107 vi\u0161e verzija bile deprecated &#8211; dio njih je ionako bio zami\u0161ljen kao interni, a dio je danas pokriven native API-jima u svim podr\u017eanim browserima. Uklonjeno je sljede\u0107e:<\/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>U praksi, ve\u0107inu toga zamijeni\u0161 native ekvivalentima poput <code>Array.isArray()<\/code>, <code>JSON.parse()<\/code>, <code>String.prototype.trim()<\/code> i <code>Date.now()<\/code>.<\/p>\n\n\n\n<p>Kombinacija rezanja deprecated API-ja i uklanjanja IE<11 koda donijela je i konkretan dobitak: <strong>preko 3kB manje (gzipped)<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5) Izba\u010dene interne Array metode s jQuery prototipa (<code>push<\/code>, <code>sort<\/code>, <code>splice<\/code>)<\/h3>\n\n\n\n<p>jQuery prototip je dugo nosio neke Array metode koje nisu bile \u201cjQuery-like\u201d i bile su namijenjene internom kori\u0161tenju: <code>push<\/code>, <code>sort<\/code> i <code>splice<\/code>. U 4.0 su uklonjene s prototipa.<\/p>\n\n\n\n<p>Ako si ih (svjesno ili slu\u010dajno) koristio, primjer iz releasea: umjesto <code>$elems.push( elem )<\/code> koristi:<\/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>\/\/ jQuery 4.x: push nije na jQuery prototipu\n[].push.call( $elems, elem );\n\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\">\/\/ jQuery 4.x: push nije na jQuery prototipu<\/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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">6) Redoslijed focus\/blur eventova sada prati W3C specifikaciju<\/h3>\n\n\n\n<p>Ovo je jedan od suptilnijih, ali realno breaking detalja. Godinama browseri nisu bili usugla\u0161eni oko redoslijeda focus\/blur eventova (focusin, focusout, focus, blur). S novijim verzijama svih browsera koje jQuery 4.0 podr\u017eava, kona\u010dno je do\u0161lo do konvergencije &#8211; ali na redoslijed koji se razlikuje od onoga \u0161to je jQuery godinama \u201cnametao\u201d radi konzistentnosti.<\/p>\n\n\n\n<p>Od jQuery 4.0 jQuery <strong>vi\u0161e ne overridea native pona\u0161anje<\/strong>. To zna\u010di da \u0107e svi browseri osim IE-a pratiti aktualnu W3C specifikaciju, odnosno redoslijed:<\/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>U prija\u0161njim verzijama jQuery je imao redoslijed: <code>focusout<\/code>, <code>blur<\/code>, <code>focusin<\/code>, <code>focus<\/code>. Zanimljiv detalj iz najave: jedini browser koji je ikad pratio stari W3C spec (prije updatea iz 2023.) bio je Internet Explorer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7) Slim build je jo\u0161 tanji: bez Deferreds i Callbacks<\/h3>\n\n\n\n<p>Slim build u jQuery 4.0.0 postaje jo\u0161 manji jer su iz njega uklonjeni <strong>Deferreds<\/strong> i <strong>Callbacks<\/strong>. Novi slim build je oko <strong>19.5kB gzipped<\/strong>. Budu\u0107i da Deferreds ve\u0107 dugo podr\u017eavaju <strong>Promises A+<\/strong> standard (https:\/\/promisesaplus.com\/), u ve\u0107ini slu\u010dajeva mo\u017ee\u0161 prije\u0107i na native <code>Promise<\/code>.<\/p>\n\n\n\n<p>Va\u017ena nijansa: Deferreds imaju i neke dodatne mogu\u0107nosti koje native Promises nemaju, ali \u201cve\u0107ina\u201d tipi\u010dne upotrebe mo\u017ee se prebaciti na Promise metode. Native Promises su dostupne u svim browserima koje jQuery podr\u017eava <strong>osim IE11<\/strong>. Ako mora\u0161 podr\u017eavati IE11, preporuka je koristiti <strong>main build<\/strong> ili dodati <strong>polyfill<\/strong> za native Promises.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Slim build: linkovi i kada ga ima smisla uzeti<\/h2>\n\n\n\n<p>Slim build je i dalje ideja \u201cuzmi samo \u0161to treba\u0161\u201d: ponekad ti ne treba AJAX (ili ga radi\u0161 kroz posebnu biblioteku), animacije mo\u017ee\u0161 rije\u0161iti CSS-om i manipulacijom classova, a kad ima\u0161 native Promises (svugdje osim IE11), Deferreds\/Callbacks \u010desto postanu vi\u0161ak. Razlika u veli\u010dini je oko <strong>8kB gzipped<\/strong> u odnosu na regularni build.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CDN linkovi (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>Ove nadogradnje su ve\u0107 dostupne kao trenutne verzije na <strong>npm-u<\/strong> i <strong>Boweru<\/strong>. Pregled svih na\u010dina instalacije ostaje na https:\/\/jquery.com\/download\/. Javnim CDN-ovima kopije sti\u017eu \u201cdanas\u201d (po najavi), ali treba im dati par dana da objave fileove &#8211; ako \u017eeli\u0161 odmah, koristi slu\u017ebeni CDN.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Changelog: kompletna usporedba i \u0161to je sve dotaknuto<\/h2>\n\n\n\n<p>Ako \u017eeli\u0161 pro\u0107i sve commitove i promjene, puni changelog je ovdje: <strong>4.0.0<\/strong> (usporedba 3.7.1 \u2192 4.0.0): https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1&#8230;4.0.0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajax (sa\u017eetak stavki iz changeloga)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Don\u2019t treat array data as binary (commit 992a1911)<\/li>\n\n\n<li>Allow <code>processData: true<\/code> even for binary data (commit ce264e07)<\/li>\n\n\n<li>Support binary data (including FormData) (commit a7ed9a7b)<\/li>\n\n\n<li>Support <code>headers<\/code> for script transport even when cross-domain (#5142, commit 6d136443)<\/li>\n\n\n<li>Support <code>null<\/code> as success functions in <code>jQuery.get<\/code> (#4989, commit 74978b7e)<\/li>\n\n\n<li>Don\u2019t auto-execute scripts unless dataType provided (#4822, commit 025da4dd)<\/li>\n\n\n<li>Make responseJSON work for erroneous same-domain JSONP requests (commit 68b4ec59)<\/li>\n\n\n<li>Execute JSONP error script responses (#4771, commit a1e619b0)<\/li>\n\n\n<li>Avoid CSP errors in the script transport for async requests (#3969, commit 07a8e4a1)<\/li>\n\n\n<li>Drop the json to jsonp auto-promotion logic (#1799, #3376, commit e7b3bc48)<\/li>\n\n\n<li>Overwrite s.contentType with content-type header value, if any (#4119, commit 7fb90a6b)<\/li>\n\n\n<li>Deprecate AJAX event aliases, inline event\/alias into deprecated (commit 23d53928)<\/li>\n\n\n<li>Do not execute scripts for unsuccessful HTTP responses (#4250, commit 50871a5a)<\/li>\n\n\n<li>Simplify jQuery.ajaxSettings.xhr (#1967, commit abdc89ac)<\/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 (#5388, commit 063831b6)<\/li>\n\n\n<li>Shave off a couple of bytes (commit b40a4807)<\/li>\n\n\n<li>Don\u2019t stringify attributes in the setter (#4948, commit 4250b628)<\/li>\n\n\n<li>Drop the <code>toggleClass(boolean|undefined)<\/code> signature (#3388, commit a4421101)<\/li>\n\n\n<li>Refactor val(): don\u2019t strip carriage return, isolate IE workarounds (commit ff281991)<\/li>\n\n\n<li>Don\u2019t set the type attr hook at all outside of IE (commit 9e66fe9a)<\/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 (#5628, commit eca2a564)<\/li>\n\n\n<li>Drop the cache in finalPropName (commit 640d5825)<\/li>\n\n\n<li>Tests: Fix tests &#038; support tests under CSS Zoom (#5489, commit 071f6dba)<\/li>\n\n\n<li>Fix reliableTrDimensions support test for initially hidden iframes (commit b1e66a5f)<\/li>\n\n\n<li>Selector: Align with 3.x, remove the outer <code>selector.js<\/code> wrapper (commit 53cf7244)<\/li>\n\n\n<li>Make the reliableTrDimensions support test work with Bootstrap CSS (#5270, commit 65b85031)<\/li>\n\n\n<li>Make <code>offsetHeight( true )<\/code>, etc. include negative margins (#3982, commit bce13b72)<\/li>\n\n\n<li>Return <code>undefined<\/code> for whitespace-only CSS variable values (#5120, commit 7eb00196)<\/li>\n\n\n<li>Don\u2019t trim whitespace of undefined custom property (#5105, commit ed306c02)<\/li>\n\n\n<li>Skip falsy values in <code>addClass( array )<\/code>, compress code (#4998, commit a338b407)<\/li>\n\n\n<li>Justify use of rtrim on CSS property values (commit 655c0ed5)<\/li>\n\n\n<li>Trim whitespace surrounding CSS Custom Properties values (#4926, commit efadfe99)<\/li>\n\n\n<li>Include <code>show<\/code>, <code>hide<\/code> &#038; <code>toggle<\/code> methods in the jQuery slim build (commit 297d18dd)<\/li>\n\n\n<li>Remove the opacity CSS hook (commit 865469f5)<\/li>\n\n\n<li>Workaround buggy getComputedStyle on table rows in IE\/Edge (#4490, commit 26415e08)<\/li>\n\n\n<li>Don\u2019t automatically add &#8220;px&#8221; to properties with a few exceptions (#2795, commit 00a9c2e5)<\/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 (commit e2fe97b7)<\/li>\n\n\n<li>Switch <code>$.parseHTML<\/code> from <code>document.implementation<\/code> to <code>DOMParser<\/code> (commit 0e123509)<\/li>\n\n\n<li>Fix the exports setup to make bundlers work with ESM &#038; CommonJS (#5416, commit 60f11b58)<\/li>\n\n\n<li>Add more info about named exports (commit 5f869590)<\/li>\n\n\n<li>Simplify code post browser support reduction (commit 93ca49e6)<\/li>\n\n\n<li>Move the factory to separate exports (commit 46f6e3da)<\/li>\n\n\n<li>Use named exports in <code>src\/<\/code> (#5262, commit f75daab0)<\/li>\n\n\n<li>Fix regression in jQuery.text() on HTMLDocument objects (#5264, commit a75d6b52)<\/li>\n\n\n<li>Selector: Move jQuery.contains from the selector to the core module (commit 024d8719)<\/li>\n\n\n<li>Drop the root parameter of jQuery.fn.init (commit d2436df3)<\/li>\n\n\n<li>Don\u2019t rely on splice being present on input (commit 9c6f64c7)<\/li>\n\n\n<li>Manipulation: Add basic TrustedHTML support (#4409, commit de5398a6)<\/li>\n\n\n<li>Report browser errors in parseXML (#4784, commit 89697325)<\/li>\n\n\n<li>Make jQuery.isXMLDoc accept falsy input (#4782, commit fd421097)<\/li>\n\n\n<li>Drop support for Edge Legacy (i.e. non-Chromium Microsoft Edge) (#4568, commit e35fb62d)<\/li>\n\n\n<li>Fire iframe script in its context, add doc param in globalEval (#4518, commit 4592595b)<\/li>\n\n\n<li>Exclude callbacks &#038; deferred modules in the slim build as well (commit fbc44f52)<\/li>\n\n\n<li>Migrate from AMD to ES modules (commit d0ce00cd)<\/li>\n\n\n<li>Use Array.prototype.flat where supported (#4320, commit 9df4f1de)<\/li>\n\n\n<li>Remove private copies of push, sort &#038; splice from the jQuery prototype (commit b59107f5)<\/li>\n\n\n<li>Implement .even() &#038; .odd() to replace POS :even &#038; :odd (commit 78420d42)<\/li>\n\n\n<li>Deprecate jQuery.trim (#4363, commit 5ea59460)<\/li>\n\n\n<li>Remove IE-specific support tests, rely on document.documentMode (#4386, commit 3527a384)<\/li>\n\n\n<li>Drop support for IE <11, iOS <11, Firefox <65, Android Browser &#038; PhantomJS (#3950, #4299, commit cf84696f)<\/li>\n\n\n<li>Remove deprecated jQuery APIs (#4056, commit 58f0c00b)<\/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 (commit 805cdb43)<\/li>\n\n\n<li>Event:Manipulation: Prevent collisions with Object.prototype (#3256, commit 9d76c0b1)<\/li>\n\n\n<li>Separate data &#038; css\/effects camelCase implementations (#3355, commit 8fae2120)<\/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> (#5201, commit 258ca1ec)<\/li>\n\n\n<li>Respect source maps in jQuery.Deferred.exceptionHook (#3179, commit 0b9c5037)<\/li>\n\n\n<li>Rename master to primary (commit a32cf632)<\/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 (commit fd6ffc5e)<\/li>\n\n\n<li>Remove jQuery.trim (commit 0b676ae1)<\/li>\n\n\n<li>Fix AMD parameter order (commit f810080e)<\/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 (#4529, commit 3bbbc111)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Docs (izvadak promjena)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Fix some minor issues in comments (commit e4d4dd81)<\/li>\n\n\n<li>update herodevs link in README (#5695, commit 093e63f9)<\/li>\n\n\n<li>Align CONTRIBUTING.md with <code>3.x-stable<\/code> (commit d9281061)<\/li>\n\n\n<li>Update CONTRIBUTING.md (commit 4ef25b0d)<\/li>\n\n\n<li>add version support section to README (commit cbc2bc1f)<\/li>\n\n\n<li>Update remaining HTTP URLs to HTTPS (commit 7cdd8374)<\/li>\n\n\n<li>Fix module links in the package README (commit ace646f6)<\/li>\n\n\n<li>update watch task in CONTRIBUTING.md (commit 77d6ad71)<\/li>\n\n\n<li>Fix typos found by codespell (commit 620870a1)<\/li>\n\n\n<li>remove stale gitter badge from readme (commit 67cb1af7)<\/li>\n\n\n<li>Remove the &#8220;Grunt build&#8221; section from the PR template (commit 988a5684)<\/li>\n\n\n<li>Remove stale badge from README (commit bcd9c2bc)<\/li>\n\n\n<li>Update the README of the published package (commit edccabf1)<\/li>\n\n\n<li>Remove git.io from a GitHub Actions comment (commit 016872ff)<\/li>\n\n\n<li>Update webpack website in README (commit 01819bc3)<\/li>\n\n\n<li>add link to patchwelcome and help wanted issues (commit 924b7ce8)<\/li>\n\n\n<li>add link to preview the new CLAs (commit 683ceb8f)<\/li>\n\n\n<li>Fix incorrect <code>trac-NUMBER<\/code> references (commit eb9ceb2f)<\/li>\n\n\n<li>remove expired links from old jquery source (#4997, commit ed066ac7)<\/li>\n\n\n<li>Remove links to Web Archive from source (#4981, commit e24f2dcf)<\/li>\n\n\n<li>Replace <code>#NUMBER<\/code> Trac issue references with <code>trac-NUMBER<\/code> (commit 5d5ea015)<\/li>\n\n\n<li>Update the URL to the latest jQuery build in CONTRIBUTING.md (commit 9bdb16cd)<\/li>\n\n\n<li>Remove the CLA checkbox in the pull request template (commit e1248931)<\/li>\n\n\n<li>update irc to Libera and fix LAMP dead link (commit 175db73e)<\/li>\n\n\n<li>Update Frequently Reported Issues in the GitHub issue template (commit 7a6fae6a)<\/li>\n\n\n<li>Change JS Foundation mentions to OpenJS Foundation (commit 11611967)<\/li>\n\n\n<li>add SECURITY.md, show security email address (commit 2ffe54ca)<\/li>\n\n\n<li>Fix typos (commit 1a7332ce)<\/li>\n\n\n<li>Update the link to the jsdom repository (commit a62309e0)<\/li>\n\n\n<li>Use https for hyperlinks in README (commit 73415da2)<\/li>\n\n\n<li>Remove a mention of the event\/alias.js module from README (commit 3edfa1bc)<\/li>\n\n\n<li>Update links to EdgeHTML issues to go through Web Archive (commit 1dad1185)<\/li>\n\n\n<li>direct users to GitHub docs for cloning the repo (commit f1c16de2)<\/li>\n\n\n<li>Change OS X to macOS in README (commit 5a3e0664)<\/li>\n\n\n<li>Update most URLs to HTTPS (commit f09d9210)<\/li>\n\n\n<li>Convert link to Homebrew from HTTP to HTTPS (commit e0022f23)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Effect \/ Effects<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Fix a unnecessary conditional statement in .stop() (#4374, commit 110802c7)<\/li>\n\n\n<li>Remove jQuery.fx.interval (commit 6c2c7362)<\/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 (commit 7c123dec)<\/li>\n\n\n<li>Increase robustness of an inner native event in leverageNative (#5459, commit 527fb3dc)<\/li>\n\n\n<li>Avoid collisions between jQuery.event.special &#038; Object.prototype (commit bcaeb000)<\/li>\n\n\n<li>Simplify the check for saved data in leverageNative (commit dfe212d5)<\/li>\n\n\n<li>Make trigger(focus\/blur\/click) work with native handlers (#5015, commit 6ad3651d)<\/li>\n\n\n<li>Simulate focus\/blur in IE via focusin\/focusout (#4856, #4859, #4950, commit ce60d318)<\/li>\n\n\n<li>Don\u2019t break focus triggering after <code>.on(focus).off(focus)<\/code> (#4867, commit e539bac7)<\/li>\n\n\n<li>Make focus re-triggering not focus the original element back (#4382, commit dbcffb39)<\/li>\n\n\n<li>Don\u2019t crash if an element is removed on blur (#4417, commit 5c2d0870)<\/li>\n\n\n<li>Remove the event.which shim (#3235, commit 1a5fff4c)<\/li>\n\n\n<li>remove jQuery.event.global (commit 18db8717)<\/li>\n\n\n<li>Only attach events to objects that accept data &#8211; for real (#4397, commit d5c505e3)<\/li>\n\n\n<li>Stop shimming focusin &#038; focusout events (#4300, commit 8a741376)<\/li>\n\n\n<li>Prevent leverageNative from registering duplicate dummy handlers (commit eb6c0a7c)<\/li>\n\n\n<li>Fix handling of multiple async focus events (#4350, commit ddfa8376)<\/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 (#5214, commit 3cad5c43)<\/li>\n\n\n<li>Generalize a test to support IE (commit 88690ebf)<\/li>\n\n\n<li>Support $el.html(selfRemovingScript) (#5378, #5377, commit 937923d9)<\/li>\n\n\n<li>Extract domManip to a separate file (commit ee6e8740)<\/li>\n\n\n<li>Don\u2019t remove HTML comments from scripts (#4904, commit 2f8f39e4)<\/li>\n\n\n<li>Respect script crossorigin attribute in DOM manipulation (#4542, commit 15ae3614)<\/li>\n\n\n<li>Avoid concatenating strings in buildFragment (commit 9c98e4e8)<\/li>\n\n\n<li>Make jQuery.htmlPrefilter an identity function (commit 90fed4b4)<\/li>\n\n\n<li>Selector: Use the nodeName util where possible to save size (commit 4504fc3d)<\/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 (commit 556eaf4a)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Release (izvadak)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>4.0.0 (commit 4f2fae08)<\/li>\n\n\n<li>remove dist files from main branch (commit c838cfb5)<\/li>\n\n\n<li>4.0.0-rc.2 (commit 97525193)<\/li>\n\n\n<li>Update AUTHORS.txt (commit c128d5d8)<\/li>\n\n\n<li>Fix release issues uncovered during the 4.0.0-rc.1 release (commit a5b0c431)<\/li>\n\n\n<li>remove dist files from main branch (commit 9d06c6dd)<\/li>\n\n\n<li>4.0.0-rc.1 (commit 586182f3)<\/li>\n\n\n<li>Run <code>npm publish<\/code> in the post-release phase (commit ff1f0eaa)<\/li>\n\n\n<li>Only run browserless tests during the release (commit fb5ab0f5)<\/li>\n\n\n<li>Temporarily disable running tests on release (commit 3f79644b)<\/li>\n\n\n<li>publish tmp\/release\/dist folder when releasing (#5658, commit a865212d)<\/li>\n\n\n<li>correct build date in verification; other improvements (commit 53ad94f3)<\/li>\n\n\n<li>remove dist files from main branch (commit be048a02)<\/li>\n\n\n<li>4.0.0-beta.2 (commit 51fffe9f)<\/li>\n\n\n<li>ensure builds have the proper version (commit 3e612aee)<\/li>\n\n\n<li>set preReleaseBase in config file (commit 1fa8df5d)<\/li>\n\n\n<li>fix running pre\/post release scripts in windows (commit 5518b2da)<\/li>\n\n\n<li>update AUTHORS.txt (commit 862e7a18)<\/li>\n\n\n<li>migrate release process to release-it (jquery\/jquery-release#114, commit 2646a8b0)<\/li>\n\n\n<li>add factory files to release distribution (#5411, commit 1a324b07)<\/li>\n\n\n<li>use buildDefaultFiles directly and pass version (commit b507c864)<\/li>\n\n\n<li>copy dist-module folder as well (commit 63767650)<\/li>\n\n\n<li>only published versioned files to cdn (commit 3a0ca684)<\/li>\n\n\n<li>remove scripts and dev deps from dist package.json (commit 7eac932d)<\/li>\n\n\n<li>update build command in Release.generateArtifacts (commit 3b963a21)<\/li>\n\n\n<li>add support for md5 sums in windows (commit f088c366)<\/li>\n\n\n<li>remove the need to install grunt globally (commit b2bbaa36)<\/li>\n\n\n<li>upgrade release dependencies (commit 967af732)<\/li>\n\n\n<li>Remove an unused chalk dependency (commit bfb6897c)<\/li>\n\n\n<li>Use an in-repository dist README fixture (commit 358b769a)<\/li>\n\n\n<li>Update AUTHORS.txt (commit 1b74660f)<\/li>\n\n\n<li>update AUTHORS.txt (commit cf9fe0f6)<\/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 (commit 65e35450)<\/li>\n\n\n<li>Properly deprecate <code>jQuery.expr[ &quot;:&quot; ]<\/code>\/<code>jQuery.expr.filters<\/code> (commit 329661fd)<\/li>\n\n\n<li>Make <code>selector.js<\/code> module depend on <code>attributes\/attr.js<\/code> (#5379, commit e06ff088)<\/li>\n\n\n<li>Eliminate <code>selector.js<\/code> depenencies from various modules (commit e8b7db4b)<\/li>\n\n\n<li>Re-expose jQuery.find.{tokenize,select,compile,setDocument} (#5259, commit 338de359)<\/li>\n\n\n<li>Stop relying on CSS.supports( &#8220;selector(&#8230;)&#8221; ) (#5194, commit 68aa2ef7)<\/li>\n\n\n<li>Backport jQuery selection context logic to selector-native (#5185, commit 2e644e84)<\/li>\n\n\n<li>Make selector lists work with <code>qSA<\/code> again (#5177, commit 09d988b7)<\/li>\n\n\n<li>Implement the <code>uniqueSort<\/code> chainable method (#5166, commit 5266f23c)<\/li>\n\n\n<li>Re-introduce selector-native.js (commit 4c1171f2)<\/li>\n\n\n<li>Manipulation: Fix DOM manip within template contents (#5147, commit 3299236c)<\/li>\n\n\n<li>Drop support for legacy pseudos, test custom pseudos (commit 8c7da22c)<\/li>\n\n\n<li>Use jQuery <code>:has<\/code> if <code>CSS.supports(selector(...))<\/code> non-compliant (#5098, commit d153c375)<\/li>\n\n\n<li>Remove the &#8220;a:enabled&#8221; workaround for Chrome <=77 (commit c1ee33ad)<\/li>\n\n\n<li>Make empty attribute selectors work in IE again (#4435, commit 05184cc4)<\/li>\n\n\n<li>Use shallow document comparisons in uniqueSort (#4441, commit 15750b0a)<\/li>\n\n\n<li>Add a test for throwing on post-comma invalid selectors (commit 6eee5f7f)<\/li>\n\n\n<li>Make selectors with leading combinators use qSA again (commit ed66d5a2)<\/li>\n\n\n<li>Use shallow document comparisons to avoid IE\/Edge crashes (#4441, commit aa6344ba)<\/li>\n\n\n<li>reduce size, simplify setDocument (commit 29a9544a)<\/li>\n\n\n<li>Leverage the :scope pseudo-class where possible (#4453, commit df6a7f7f)<\/li>\n\n\n<li>Bring back querySelectorAll shortcut usage (commit cef4b731)<\/li>\n\n\n<li>Inline Sizzle into the selector module (commit 47835965)<\/li>\n\n\n<li>Port Sizzle tests to jQuery (commit 79b74e04)<\/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 (#4832, commit 09f25436)<\/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 (commit ccbd6b93)<\/li>\n\n\n<li>Fix <code>contents()<\/code> on <code>&lt;object&gt;<\/code>s with children (#4384, commit 4d865d96)<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Fotka s jQuery 20th reuniona<\/h2>\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\/22\/2026\/01\/jquery-reunion-group-edited.jpeg\" alt=\"Grupna fotografija jQuery tima na okupljanju povodom 20. obljetnice\" class=\"wp-image-166\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited.jpeg 1804w, https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited-300x226.jpeg 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited-1024x771.jpeg 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited-768x579.jpeg 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited-1536x1157.jpeg 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/22\/2026\/01\/jquery-reunion-group-edited-400x301.jpeg 400w\" sizes=\"auto, (max-width: 1804px) 100vw, 1804px\" \/><figcaption class=\"wp-element-caption\"><em>Forr\u00e1s: blog.jquery.com (Official jQuery Blog)<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Prakti\u010dan plan za upgrade (bez dramatiziranja)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Pro\u0111i slu\u017ebeni upgrade vodi\u010d: https:\/\/jquery.com\/upgrade-guide\/4.0\/<\/li>\n\n\n<li>Uklju\u010di jQuery Migrate plugin (ako ima\u0161 ve\u0107i legacy kod ili puno pluginova): https:\/\/github.com\/jquery\/jquery-migrate\/<\/li>\n\n\n<li>Ako ti je i dalje potreban IE10\/Edge Legacy\/Android Browser ili jako stari iOS\/Firefox: ostani na jQuery 3.x<\/li>\n\n\n<li>Ako cilja\u0161 strogi CSP: testiraj flow s async script requestovima i Trusted Types okru\u017eenjem<\/li>\n\n\n<li>Ako si koristio <code>$elems.push\/sort\/splice<\/code>: prebaci na <code>[].push.call(...)<\/code> i ekvivalente<\/li>\n\n\n<li>Ako ima\u0161 custom logiku na focus\/blur eventovima (npr. validacija forma, wizard UI): ponovno provjeri o\u010dekivani redoslijed eventova (W3C redoslijed u 4.0)<\/li>\n\n\n<li>Ako koristi\u0161 slim build: potvrdi da ti ne trebaju Deferreds\/Callbacks; ako mora\u0161 podr\u017eavati IE11, uzmi main build ili Promise polyfill<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Zaklju\u010dak<\/h2>\n\n\n\n<p>jQuery 4.0.0 je \u201codrastao\u201d release: re\u017ee ozbiljan dio povijesnog tereta (IE<11 i deprecated API-ji), uvodi moderniji modulni model (ES modules + Rollup) i ciljano popravlja kompatibilnost sa sigurnosnim politikama (Trusted Types, CSP). Breaking changeovi postoje, ali su o\u010dekivani za major verziju - i iskreno, ve\u0107ina ih poga\u0111a samo projekte s legacy zahtjevima ili specifi\u010dnim edge-caseovima u eventovima i internim metodama.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Izvori<\/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 \u2013 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:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\" target=\"_blank\" rel=\"noopener noreferrer\">Full changelog: 4.0.0 (3.7.1&#8230;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:\/\/rollupjs.org\/introduction\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rollup introduction<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/docs\/whyamd.html\" target=\"_blank\" rel=\"noopener noreferrer\">Why AMD? (RequireJS docs)<\/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\/5077\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 5.0 IE11 removal plan (PR)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\" target=\"_blank\" rel=\"noopener noreferrer\">Switch most asynchronous script requests to use &lt;script&gt; tags (PR)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4541\" target=\"_blank\" rel=\"noopener noreferrer\">Migrate jQuery source from AMD to ES modules (PR)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>jQuery 4.0.0 je prvi veliki release nakon gotovo 10 godina: modernizacija builda, bolji CSP\/Trusted Types, tanji core i nekoliko breaking changeova koje vrijedi pro\u0107i prije upgradea.<\/p>\n","protected":false},"author":44,"featured_media":165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[87],"tags":[89,90,39,88,50],"class_list":["post-167","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-csp","tag-es-modules","tag-javascript","tag-jquery","tag-migracija"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/comments?post=167"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/167\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media?parent=167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/categories?post=167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/tags?post=167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}