在 jQuery 中查找具有特定类的子元素是常见的 DOM 操作需求。jQuery 提供了多种方法来选择和遍历 DOM 树,以找到符合特定条件的子元素。
find()
方法find()
方法用于在当前元素的后代中查找匹配选择器的元素。
// 查找所有具有 'active' 类的子元素
$('#parentElement').find('.active');
>
使用子选择器可以直接选择直接子元素中具有特定类的元素。
// 查找直接子元素中具有 'active' 类的元素
$('#parentElement > .active');
children()
方法children()
方法可以结合选择器来筛选子元素。
// 查找直接子元素中具有 'active' 类的元素
$('#parentElement').children('.active');
find()
会搜索所有后代元素(包括子元素、孙元素等)children()
和 >
选择器只查找直接子元素children()
方法可以不带参数,返回所有子元素<div id="container">
<div class="item active">Item 1 (active)</div>
<div class="item">
Item 2
<div class="active">Nested active</div>
</div>
<div class="item active">Item 3 (active)</div>
</div>
<script>
$(document).ready(function() {
// 使用 find() 查找所有后代中的 .active
var allActive = $('#container').find('.active');
console.log('find():', allActive.length); // 输出 3
// 使用 children() 查找直接子元素中的 .active
var directChildrenActive = $('#container').children('.active');
console.log('children():', directChildrenActive.length); // 输出 2
// 使用子选择器
var selectorActive = $('#container > .active');
console.log('> selector:', selectorActive.length); // 输出 2
});
</script>
find()
可能比 children()
慢,因为它搜索范围更大问题:为什么我的选择器找不到元素?
可能原因:
$(document).ready()
中执行问题:如何提高查找性能?
解决方案: