jquery - JQuery 将每个函数加倍
问题描述
我有两个.school
元素,每个学校都有 3 个.my-child
元素。
我的工作是寻找.my-child
每所学校的元素,为第一个孩子应用红色背景,为第二个孩子应用绿色背景,为第三个孩子应用蓝色背景。
在每所学校,我的代码是为每个 .my-child 添加一个新类:child1、child2、child3 并为每个类应用背景颜色。
问题:我在第一所学校取得了预期的成绩,我添加了 .child1、.child2、.child3 每个 .my-child。但是,第二所学校,应该是一样的:.child1, .child2, .child3,但是我得到了.child3, .child4, .child6。
$('.school').each(function() {
$('.my-child').each(function(i, el) {
$(this).addClass('child' + (i + 1));
});
})
.my-child.child1 {
background: red;
}
.my-child.child2 {
background: green;
}
.my-child.child3 {
background: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="school">
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
</div>
<br><br>
<div class="school">
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
<div class="class-room">
<div class="my-child">Child</div>
</div>
<div class="class-room">
<div class="other">Child</div>
</div>
</div>
解决方案
您几乎明白了——您需要在每个.each()
循环中引用特定元素。您分别为第二个执行此操作,但不是为第一个执行此操作:
$('.school').each(function(a, b){
$(b).find('.my-child').each(function(i, el) {
$(this).addClass('child'+(i+1));
});
})
推荐阅读
- kotlin - 为什么这个协程演示会崩溃?
- php - 究竟如何让 AST 扩展工作?
- java - 如何在 Android Studio 中每 24 小时重置一次数据结构?
- java - 为什么 Gradle 缓存目录中有数字?
- c++ - 我在 IDA 或 dbg 或 olly 上看到的内存与我在 RAM 上实时加载的内存相同吗?
- android - FAILURE:构建失败并出现异常:app:multiDexListDebug
- python - 看门狗(python) - 只监视一种文件格式并忽略“PatternMatchingEventHandler”中的所有其他内容
- json - 如何舍入、下限、上限、截断
- rust - 如何解决货物构建失败并出现“与`cc`链接失败:退出代码:1”
- javascript - 处理 React Native 上的 Internet 连接丢失