DEV Community

Ben Halpern
Ben Halpern

Posted on

Do you still work with jQuery?

For folks who still work with jQuery, for personal or professional projects, what is the overall context of this work? Do you expect this to be refactored at any point?

Oldest comments (63)

Collapse
 
ben profile image
Ben Halpern

Personally it's been a couple years since I've worked with jQuery. In general I'd say it's only a good thing if you can refactor your code to vanilla use of modern native dom query helpers, fetch calls, etc.

Collapse
 
brewinstallbuzzwords profile image
Adam Davis

I work in healthcare tech and a lot of my company's products make heavy use of jQuery. There's been some push to remake some things in React and to start using React for newer projects, but I'm skeptical that it'll actually happen any time soon.

Collapse
 
link2twenty profile image
Andrew Bone • Edited

Also in 15 years people will be doing posts like this saying 'do you still use React?' πŸ˜…

Collapse
 
nataliedeweerd profile image
𝐍𝐚𝐭𝐚π₯𝐒𝐞 𝐝𝐞 π–πžπžπ«π • Edited

Yes. No plans to refactor. It makes mine and my developer's lives a lot easier.

Our projects are LAMP stack and don't use modern JS frontends.

Collapse
 
ben profile image
Ben Halpern

I wrote this post years ago about jQuery at the time...

But have since come to think that it is effectively no longer needed (I think the fetch API put me over the top). Can you elaborate on what keeps you around the most?

Collapse
 
nataliedeweerd profile image
𝐍𝐚𝐭𝐚π₯𝐒𝐞 𝐝𝐞 π–πžπžπ«π

Predominantly the readability. I find jQuery a lot easier to read than JS.

I see this site referenced a lot: youmightnotneedjquery.com/ But all it does for me is prove how much I prefer jQuery!

Take the getJson function for example:

jQuery

$.getJSON('/my/url', function(data) {

});
Enter fullscreen mode Exit fullscreen mode

Javascript

var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);

request.onload = function() {
  if (this.status >= 200 && this.status < 400) {
    // Success!
    var data = JSON.parse(this.response);
  } else {
    // We reached our target server, but it returned an error

  }
};

request.onerror = function() {
  // There was a connection error of some sort
};

request.send();
Enter fullscreen mode Exit fullscreen mode

I know which I prefer...

jQuery also comes with the added benefit of slideToggle() functions, fadeIn/Out() functions, etc.

And I can just $('.classname') to target something, rather than document.getElementsByClassName(className)... it's just such an effort to write that much.

Time is money, and jQuery helps me do what I need to do quicker ! :)

I appreciate my team and I would need to transition to Vanilla JS if we start to use more frontend frameworks, and we are looking to bring in Vue to some of our projects in the future. But our LAMP systems (Wordpress/Drupal/CodeIgnighter) are still our bread-and-butter projects, and using jQuery in them just makes our lives easier.

I'd also argue modern frontend frameworks are still mostly in their adolescent stages, where they're still trying to stabilise themselves/their role in the future of the web... Vue has been around for 7 years, React 8 years, and Angular only 5 years; whereas jQuery has evolved over 15 years and understands its place in the world.

Collapse
 
sparkalow profile image
Brian M.

I work with it when I have to, but given the choice will go with vanilla js or something more modern when needed. I sometimes have to work with older systems (magento 1, old junky wordpress sites, etc.) and removing a jquery dependency is out of scope.

Collapse
 
starbist profile image
Silvestar Bistrović

I'm using it when I absolutely have to.
Even when the project uses jQuery, I still write vanilla JavaScript.

Collapse
 
dannyengelman profile image
Danny Engelman • Edited

Interesting fact; if you (only) use 50 KB+ jQuery for its Selectors, IE9 was the last browser to implement .querySelector .... in 2011

Collapse
 
tylerlwsmith profile image
Tyler Smith

I still use jQuery with WordPress, and I don't expect that I'll stop any time soon. Most of the time a Wordpress plugin will need to load jQuery anyway, and it's really nice for sprinkling JavaScript onto a static page. I write less code than I would with Vanilla JS, and it has animations & ajax built in. Sure, I could piece animations & ajax together another way, but I don't see the reason when jQuery has both.

I'm not a luddite: I use React when I build full-blown web applications. I've also used ES6 features to build apps with Vanilla JS before. But unless bundle size is a major constraint, I still feel perfectly happy reaching for jQuery in 2021.

I wrote about this more extensively in my article with the clickbait-y title, "Hating jQuery doesn't make you cool." Link below 😊

Collapse
 
janmpeterka profile image
Jan Peterka

Do you prefer ajax to fetch for some particular reason? as BE dev I'm bit lost in these things, so I will be glad for more insigth into this :)

Collapse
 
tylerlwsmith profile image
Tyler Smith

I sure do. Fetch is too low level for my taste: I don't like having to parse the response for the HTTP code to decide how to handle errors. I almost always prefer jQuery's ajax() method or the Axios library for ajax instead of raw fetch requests. They handle a bunch of things automatically that I'd have to code myself with fetch.

Collapse
 
matthewbdaly profile image
Matthew Daly • Edited

Have you looked at Alpine.js at all? I quite like that as a jQuery replacement because:

  • It's tiny - it and Axios together are still only a fraction the size of jQuery
  • It provides a more declarative API, largely copied from Vue

These days I don't really like including jQuery by default on new projects because a lot of it simply isn't needed, but at the same time doing a lot of that stuff in vanilla JS can be a chore. Alpine's so far proven to be a good solution for what I used to fall back to using jQuery for.

Collapse
 
imthedeveloper profile image
ImTheDeveloper

In the same way I'm doing with Vue.js, drop in the script tag and swap out the JQuery. I'll check out Alpine, Vue I just seemed to "get it" quite quick.

Thread Thread
 
tylerlwsmith profile image
Tyler Smith

Alpine has almost everything I like about Vue without the build the steps. It's one of the best front-end tools to come out in the past few years.

Thread Thread
 
imthedeveloper profile image
ImTheDeveloper • Edited

Yep with the cdn script there is no build for Vue either so fully with you on such a low impact way to improve

vuejs.org/v2/guide/installation.ht...

Collapse
 
tylerlwsmith profile image
Tyler Smith

Alpine is absolutely amazing. It's become my favorite tool for adding interactivity on server-rendered apps that I build with frameworks like Laravel. And Alpine recently added an equivalent of jQuery's slideToggle(), which is the feature I needed most often from jQuery.

I'm not terribly concerned about the extra kilobytes I get from using jQuery. jQuery doesn't block the DOM from rendering, and it doesn't require activation bootstrapping the way that a framework would: it just needs to download and parse. It's very different than React where you can't render anything until the library is downloaded, parsed, and your app code executed. Even server-rendered React has issues with links not working until the app is fully hydrated.

Avoiding extra kilobytes is nice, but it's easy to go down a rabbit hole where we focus on reducing the kilobytes of JavaScript because it's easier to measure than other higher-impact UX like avoiding page jank, creating useful error states, avoiding responsive issues, etc. Alpine feels nicer to use in a lot of cases though!

Collapse
 
philw_ profile image
Phil Wolstenholme

+1 for Alpine, I love it when working with server rendered pages.

Collapse
 
ironcladdev profile image
Conner Ow

I heard a few years ago that jquery was outdated and wasn't really in use anymore. I usually use plain DOM and created a little function to help me with document.querySelector()

const $ = tag => document.querySelector(tag);

Collapse
 
mindplay profile image
Rasmus Schultz

Yep, I often use this:

const $ = sel => [...document.querySelectorAll(sel)];
Enter fullscreen mode Exit fullscreen mode

This gives you useful array methods like filter and map and works for empty sets, much like jQuery. πŸ™‚

Collapse
 
bobbyiliev profile image
Bobby Iliev

Speaking of jquery, here’s a great story that I’ve recently read

devdojo.com/tnylea/its-ok-jquery-i...

Collapse
 
parenttobias profile image
Toby Parent • Edited

I work with a few clients for whom sites were built during the Browser Wars days, when jQuery was everywhere like a battlefield hospital. Fifteen years later, these folks are still using jQuery, Backbone (precursor cousin to Angular) and perl. And they actively resist updating. They want the code maintained at this point, because it works and it's intimately tied to many aspects of their business.

Do they need jQuery? Absolutely not. Would the business benefit from an overhaul? Absolutely. Can they afford an overhaul? Likely, if done with a strategic plan, in stages. But they are terrified of having this spaghetti code castle collapse if someone makes a significant change.

So until i can convince them to either replace parts in stages or to run parallel servers so we can deploy and test under load... They're sticking with what works.

Collapse
 
moopet profile image
Ben Sinclair

I have a couple of big projects that use jQuery. We expect to keep it until the entire sites are rebuilt, because there's no point replacing it really.

When I edit javascript files that're already using jQuery, sometimes I use it and sometimes I write modern vanilla javascript, but these sites have no build process that would convert modern script into anything suitable for obsolete browsers - and some sites still have to support vintage tech.

Collapse
 
wolfhoundjesse profile image
Jesse M. Holmes

I skipped jQuery while I was playing the tuba. By the time I came back, Angular 2 was a baby, so I jumped back in with TypeScript.

Collapse
 
pffigueiredo profile image
Pedro Figueiredo

Not since about 2 years ago, but I got so used to their selector syntax, that I just use $ instead of document.querySelector in the chrome dev tools - yeah that is already implement in there by default 😎

Collapse
 
eboye profile image
eboye

Only when maintaining old projects that need "quick fix". But almost everything I do now is either ES or Vue

Collapse
 
kayis profile image
K

Somehow I dodged that bullet. :D

In 2006 when jQuery was released, I was neck deep in PHP and I didn't build web apps with JavaScript until 2011. At that time I had the impression jQuery was legacy and nobody uses it anymore, so I didn't bother to look more into it.

I built my first JS project with ExtJS 4 in 2011.

Then I had a short project at university in 2014, where I used Ember.js, so I guess I used jQuery indirectly, haha.

In the next job I got in 2015, they were already using React, so I went with that, and later did some React-Native projects as a freelancer later.

But the first JavaScript book I read 2011 was "Pro JavaScript Techniques" by John Resig, so I guess, I can't deny that jQuery had some influence on my JS journey :D