For very small amounts, perhaps, but honestly, even then I think it has limitations. As an anecdote, about six months ago, I needed to add a couple of dynamic forms to a static site. The forms were a simple contact us, and a mailing list sign up form, and only needed to handle the states of Open->Submitting->Thanks|Failed->Open, while preventing double submissions, etc.
I wrote the first one in jQuery (site was already using it due to the theming), and making sure handled all the various edge cases, and fixing one bug didn't cause another was far harder and time consuming than it should be.
Out of frustration, I wrote the other form in VueJS, and hacked the whole form in about an hour or two. My take away was that anything involving state in jQuery can get overly complicated very quickly.
Then I'd reach for Alpine. Very lightweight, and I can use the fetch API instead of $.ajax.
You want to be as confident as possible you can bump to a new version on your old site in 4 years if you have to? Use Jquery.
I mean, all you really need is a Turing Machine, but they're not very pleasant to program.
Same thing with vanilla JS and jQuery.
Well, yes. Every JS library can be written in vanilla JS. The point of jQuery, React, etc. is to make it easier for the programmer to reason about what is going on while avoiding bugs.
I recently had to rewrite a bunch of vanilla promise-based code to use jQuery promises once I realized IE11 didn't work.
When you just want to add a small bit of interaction to a mostly-static site, jQuery can help.
There's a current trend to complicate things with a JAM stack that really don't need to be complicated.
I've seen people propose something like
Where really they could have just gone with