$
itself is a god object. Everything goes on it. The standard plugin / extension architecture that is recommended is to just bolt more methods on $
itself!
Surely this is bad. An example would be how we have both $.load
which is overloaded to do completely different things. If they were on two separate sensibly named objects $Container.load
and $EventTarget.load
. Personally I would deprecate the latter in favour of .on('load'
The animation should be it's own little modular thing, not bolted onto $
. Ajax should be it's own little modular thing, not bolted onto $
This is overloaded to three functions. It would be more sensible to have select
, construct
and domready
as there seperate entities.
We have some subset of $.ajax
short cuts which are uneven. These should be removed.
What does it even do? It doesn't just set / get attributes. It does a whole bunch of weird logic for backwards compat.
Useless, slow utility selectors. Having these things promotes bad and slow code. You wouldn't want to use them for performance penalities. They also make the CSS selector a joke by throwing propitiatory selectors in the mix.
At least split the selector engine into two, one that adheres to (a subset of) standards and one which have their own extensions.
css isn't bad as such. But it's overused, a lot. We do need a cross browser style manipulation utility but we don't need documentation recommending you use it everywhere.
The community seems to forget the massive penalty that is causing re flows. editing in-line css is slow and should be avoided
Another overloaded method that shouldn't be overloaded, that's just plain confusing
These shouldn't exist.
Doesn't match the .forEach
, .map
, etc signature. Massively confusing
domManip executes all scripts irregardless of their status. It does not bother to check whether they are inserted into a document nor does it bother to check whether their "already started" flag is set.
The first is a flag indicating whether or not the script block has been "already started". Initially, script elements must have this flag unset (script blocks, when created, are not "already started"). The cloning steps for script elements must set the "already started" flag on the copy if it is set on the element being cloned.
Function.prototype.bind
exists. Pick a better name