Hacker News new | ask | show | jobs
by ryanbrunner 1987 days 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.
2 comments

You can use forEach without the splat:

    document.querySelectorAll(".className").forEach(el => el.classList.add('newClass'));
Still doesn't seem like much of a win compared to the jQuery :)

    $(".classname").addClass("darktheme")
NodeLists should have a forEach method as far as I know