4 ms·
I suppose you write all your code in assembly too? There's no room for going higher-level than the APIs exposed by the browser?
by agildehaus 14y ago
I suppose you write all your code in assembly too? There's no room for going higher-level than the APIs exposed by the browser?
- mkmcdonald 14y agoThe DOM API is clear enough that silly abstractions like "selector engines" are unnecessary. The C vs. Assembly argument is such a silly non-point; apples and artichokes.
- nilliams 14y agoSelector engines are clearly not silly abstractions otherwise all major browsers would not have implemented querySelectorAll.
- mkmcdonald 14y ago…which is a façade for the existing CSS engine. Developers clamoured for it (right or wrong), and it was implemented.
- MatthewPhillips 14y agoBut since they did, why use jQuery on mobile when 100% of mobile browsers support querySelectorAll?
- taligent 14y agoHilarious that you think that one of the core features of the most successful JS library in history is a "silly abstraction". And JQuery is much more than just a selector engine.
- MatthewPhillips 14y agoI'm just curious what the higher-level APIs are that people need from jQuery that aren't available on mobile. I recall jQuery being popular for selector queries (available on all mobile browsers natively with querySelector and querySelectorAll) and for even listeners (offers no real advantage over addEventListener as far as I can tell).
- mark_story 14y agoWell one nice affordance jQuery offers, is you can do manipulations en-mass without having to write out a loop, or use Array.forEach(). This helps simplify event binding and manipulation code. Also there are selectors in jQuery that are not available in querySelectorAll. And lastly querySelectorAll has some pretty buggy implementations. jQuery smoothes these out.
- gildas 14y agoBinding event handlers in a loop is an anti-pattern greatly promoted by jQuery during several years. You should use event delegation.
- mark_story 14y agoSure but $('.clicky').on('click', doSomething); means no loops at all, and will bind events to all matching elements. I don't think there is a native API way to do this. Edit: typos
- MatthewPhillips 14y agodocument.getElementsByClassName('clicky').forEach(function(el) { el.addEventListener('click', doSomething); });
- d4n3 14y agoI'm not sure that works. getElementsByClassName (and Id and querySelector) returns a NodeList, not an Array, so there's no foreach, you have to convert it to an array first.
- MatthewPhillips 14y agoArray.prototype.slice.call(document.getElementsBy....