So I've been trying to do the following bit of code without importing the jQuery library:
$(".parent-class").contents().find(".child-class").css("color", "red");
I know that .contents() gets the children of each element in the set of matched elements including text and comment nodes, from the jQuery docs, but I don't think I understand what that description means. I've tried getting the children of .parent-class
with:
let theChildren = document.querySelector('.parent-class').children;
but this doesn't do the same thing as .contents().find(".child-class")
does.
EDIT: As requested in the comments I've made a new question as this one seems to not be specific enough.
contents()
is primarily used in jQuery when you need to select text nodes. In the first code sample you have it's not needed at all, as you usefind()
to select elements with a class. These lines of jQuery would serve the same purpose:In plain JS this would be:
Note
querySelectorAll()
there. This will return a nodeList which you need to iterate through to update the style in the same way the jQuery code does.There is no explicit JS equivalent of
contents()
because you traverse manually to find the nodes you want to target, or usequerySelector()
,getElementByX()
etc to target the elements.