The past 6 months I've been not been using it when I'm not coding in a framework. A lot of things that I thought would be easier aren't that bad in es6.
Though $(selector) will always be nice ... I really don't like the document.querySelectorAll(blah).forEach((eachselector) = { so much for something small });
Does save a lot of keystrokes on an daily basis and because of the double $ most people would at least think of jQuery and thus that it is some sort of selector.
I wish my code was half as good as my expectations for how my code should be. My lattes are better than my code, so maybe I should make latte art instead of ascii art
I saw a talk by Wes Bos at JAMstack conf where he did exactly this. Actually he implemented $ for querySelector and $$ for querySelectorAll
I think this is a pretty neat trick, but there's a part of me that always wants to pause and analyze whether it is strictly necessary to expand on the window object needlessly. Do you have any opinions on setting this as a part of the window object vs using a separate function to do this?
const$=(s,p=document)=>{if(/object HTML.*Element/.test(s.toString())){thrownewError('[utils/dom/$] Passed dom element instead of selector (string).');}returnArray.from(p.querySelectorAll(s))};exportdefault$;
I even export it as $ because i got so used to it ;-)))
I should note that it always returns an array, so no matter if it returns one element or multiple, you can still have one code to iterate matching elements. And if you need only one because you know there will be only one, [0] saves the day, just like in jquery unwrapping method.
I made a slight adjustment that will save you the trouble of having to add [0] to the array if there's really only one instance of that selector.
const$=(selector,context=document)=>{if(/object HTML.*Element/.test(selector.toString())){thrownewError('[utils/dom/$] Passed dom element instead of selector (string).');}if(context.querySelectorAll(selector).length>0){return[...context.querySelectorAll(selector)];}else{returncontext.querySelector(selector);}};
I had it in previous version, but i value having returned array much more than this. Because i often map, i can safely map over array of one element, but it would throw if i dont have it inside the array. Im huge advocate of that.
The past 6 months I've been not been using it when I'm not coding in a framework. A lot of things that I thought would be easier aren't that bad in es6.
Though
$(selector)
will always be nice ... I really don't like thedocument.querySelectorAll(blah).forEach((eachselector) = { so much for something small });
blah
To be honest, I have no idea if this is an good idea but...
Does save a lot of keystrokes on an daily basis and because of the double $ most people would at least think of jQuery and thus that it is some sort of selector.
I saw a talk by Wes Bos at JAMstack conf where he did exactly this. Actually he implemented
$
forquerySelector
and$$
forquerySelectorAll
I think this is a pretty neat trick, but there's a part of me that always wants to pause and analyze whether it is strictly necessary to expand on the window object needlessly. Do you have any opinions on setting this as a part of the window object vs using a separate function to do this?
This is how my utility looks like for that:
I even export it as
$
because i got so used to it ;-)))I should note that it always returns an array, so no matter if it returns one element or multiple, you can still have one code to iterate matching elements. And if you need only one because you know there will be only one,
[0]
saves the day, just like in jquery unwrapping method.That's pretty nifty!
I made a slight adjustment that will save you the trouble of having to add [0] to the array if there's really only one instance of that selector.
I had it in previous version, but i value having returned array much more than this. Because i often map, i can safely map over array of one element, but it would throw if i dont have it inside the array. Im huge advocate of that.
You can always just make your own function called
$
:)