DEV Community

Ross Summerell
Ross Summerell

Posted on

Native Javascript element selector best practice

Hey all,

So coming from Jquery, I was always told the best method to select an element is to give it a class name and use the $(".someElementClass") method.

However now not using Jquery in my Vue project, what is the best practice for selecting elements.

I am currently giving elements ID's and using the document.getElementById("someElementID");

Very curious to see what peoples opinions are!

Top comments (5)

Collapse
 
reegodev profile image
Matteo Rigon • Edited

you can use the native methods document.querySelector and document.querySelectorAll that respectively return the first or all the elements that match the CSS query selector you provide. It works almost identically to jQuery (there are some limitations when using pseudo-selectors though).

developer.mozilla.org/en-US/docs/W...

const el = document.querySelector('.someElementClass');

As they are Element methods, they can be used not only on document but on any Element to find their children

const parent = document.querySelector('.parent');
const children = parent.querySelectorAll('.children');

Some people even declare some shortcuts to access these methods quickly:

window.$ = document.querySelector;
window.$$ = document.querySelectorAll;

const header = $('h1');
const headersList = $$('h1');
Collapse
 
rhymes profile image
rhymes

Hi Ross, you can use document.getElementsByClassName() but the real question is, why are you accessing the DOM directly if you're using Vue?

You shouldn't need it usually, but maybe you're... porting an app?

ps. #ama is a tag for people that are supposed to hold Ask me anything, a form of public forum in which a person with a particular walk of life answers questions by people. I would change your tags to #help #vue #javascript for example

Collapse
 
jamesthomson profile image
James Thomson

This. 99.9% you shouldn't touch the DOM manually, Vue being data driven is how you should always approach your app. Set the values in data and initialise the plugin with that data.

That said, if you do need to access an element, the simplest "Vue way" to do it is by using $refs

Collapse
 
rsummerell profile image
Ross Summerell

Wait a second you sparked something there for me thank you

Collapse
 
rsummerell profile image
Ross Summerell • Edited

doh sorry,

I am accessing the dom to bind dates to date picker, and preselected values for lists