To get the direct children of the element selected by $(this)
in jQuery, use the .children()
method. Here’s how to do it with examples:
1. Get All Direct Children
$(this).children();
// Returns all direct child elements of $(this)
Example:
<div class="parent">
<p>Child 1</p>
<span>Child 2</span>
<div>Child 3</div>
</div>
$(".parent").click(function() {
const kids = $(this).children();
console.log(kids); // [p, span, div] (direct children)
});
2. Filter Children by a Selector
Pass a selector to .children()
to get specific children:
$(this).children(".className");
// Returns direct children with class "className"
Example:
<ul class="list">
<li class="item">Item 1</li>
<li class="item active">Item 2</li>
<li class="item">Item 3</li>
</ul>
$(".list").click(function() {
const activeItem = $(this).children(".active");
console.log(activeItem.text()); // "Item 2"
});
3. Key Notes
.children()
vs.find()
:.children()
: Only direct descendants (1 level deep)..find()
: All descendants (any level deep).
$(this).find("*"); // All nested elements
- Edge Case: If
$(this)
has no children,.children()
returns an empty jQuery object.
4. Practical Use Case
Change the background color of a parent’s direct children on click:
<div class="container">
<button>Child 1</button>
<button>Child 2</button>
</div>
$(".container").click(function() {
$(this).children().css("background", "lightblue");
});
Summary
- Use
$(this).children()
for direct children. - Use
$(this).children("selector")
to filter by class, tag, etc. - Use
$(this).find("selector")
to search all descendants (not just direct children).