在jQuery中,.each()
方法用于遍历匹配的元素集合,而要在循环中选择当前元素的子元素,可以使用find()
、children()
等方法结合当前上下文。
this
上下文和find()
$('.parent').each(function() {
// 使用$(this)获取当前元素,然后使用find()查找子元素
$(this).find('.child').css('color', 'red');
});
children()
方法$('.parent').each(function() {
// 获取直接子元素
$(this).children('.child').css('background', 'yellow');
});
.each()
的回调函数有两个参数:索引和当前元素
$('.parent').each(function(index, element) {
// 使用element参数代替this
$(element).find('.child').text('Item ' + index);
});
假设有以下HTML结构:
<ul class="list">
<li class="item">
<span class="title">Item 1</span>
<div class="content">Content 1</div>
</li>
<li class="item">
<span class="title">Item 2</span>
<div class="content">Content 2</div>
</li>
</ul>
$('.item').each(function() {
$(this).find('.title').text(function(i, oldText) {
return oldText + ' - Updated';
});
});
$('.item').each(function() {
$(this).find('.content').on('click', function() {
alert($(this).text());
});
});
find()
可能会影响性能,如果可能,尽量在循环外部定义选择器。.each()
回调函数中使用this
时,确保它指向的是DOM元素而不是其他对象。$('.parent').each(function() {
$(this).find('.child').addClass('highlight').css('color', 'blue');
});
$('.list').on('click', '.content', function() {
alert($(this).text());
});
通过以上方法,你可以有效地在jQuery的.each()
循环中操作子元素。