3 ms·
Maybe a nit, but these aren't equivalent. The jQuery version will apply it to all elements that match your selector, where the ES6 version will only apply to th
by ryanbrunner 6y ago
Maybe a nit, but these aren't equivalent. The jQuery version will apply it to all elements that match your selector, where the ES6 version will only apply to the first matching element.
Equivalent code in ES6 would be (maybe there's a terser way but this is what I'd do at first glance):
[...document.querySelectorAll('.className')].forEach(el => el.classList.add('darktheme'));
Not a whole lot extra in terms of actual code, but I'd argue it's not super intuitive (having to cast a NodeList to an array is a pretty big beginner footgun), and as you get into more complex scenarios, the jQuery architectural pattern of operating against collections of nodes really shines.
- ratww 6y agoYou can use forEach without the splat: document.querySelectorAll(".className").forEach(el => el.classList.add('newClass'));
- jamiesonbecker 6y agoStill doesn't seem like much of a win compared to the jQuery :) $(".classname").addClass("darktheme")
- peanut_worm 6y agoNodeLists should have a forEach method as far as I know