Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialSufiyaan Haroon
Full Stack JavaScript Techdegree Student 9,558 PointsI don't understand parentNode with event.target
ul.addEventListener('change', e => {
const checkbox = event.target;
const checked = checkbox.checked;
const listItem = checkbox.parentNode.parentNode;
if (checked) {
listItem.className = 'responded';
} else {
listItem.className = '';
}
});
Why does checkbox.parentNode.parentNode; return li. Shouldn't it be returning the parent of the parent of ul instead of a child of ul?
2 Answers
Steven Parker
231,271 PointsThe checkbox is the child of the label, the label is the child of the li, and the li is the child of the ul.
So checkbox.parentNode would be the label, and checkbox.parentNode.parentNode is the li.
Vaidehi S
5,731 Pointsif the eventListener is on ul then does the ul become the target? and how does checkbox know that label is the parent as we are not specifying it here in the code. so events target is ul and the parent of the ul is div who's parent is body.
Bubbling will go up from the bottom not from ul to checkbox? So I dont understand how this is working. Please help ty.
Sufiyaan Haroon
Full Stack JavaScript Techdegree Student 9,558 PointsSufiyaan Haroon
Full Stack JavaScript Techdegree Student 9,558 PointsSo parentNode returns the child of the selected element?
Steven Parker
231,271 PointsSteven Parker
231,271 PointsparenNode returns the parent of the selected element.
So
checkbox.parentNode
would be the label, since it is the parent of the checkbox.And
checkbox.parentNode.parentNode
is the li, since the li is the parent of the label which is the parent of the checkbox.