我有一系列带有课程' .collection-list'的div。在每一个中,我需要为每个其他子div添加一个类.streamItem'。这些是通过单击事件上的ajax调用加载的。
我遇到的问题是,该课程正被添加到其他所有的课程中。“。streamItem'从页面顶部开始。我想要的是在每个父母的收集列表中开始和结束交替。没有影响其他人。
目标是两列布局,我需要为右栏中的项目添加不同的类,但第一项应该永远不会有该类。
到目前为止,这是我未能做到的事情:
$(document).ajaxComplete(function () {
$('.collection-list').each(function(index) {
$('.streamItem:even').addClass('right');
})
});
答案 0 :(得分:2)
不需要每个循环:
$('.collection-list').find('.streamItem:even').addClass('right');
基本上find
适用于每个collection-list
,但只匹配每个streamItem
内的偶数{{1}}。
答案 1 :(得分:0)
您应该修改选择器,使其仅定位.each()
循环中当前div的子元素:
$('.collection-list').each(function(index) {
$(this).find('.streamItem:even').addClass('right');
});
或
$('.collection-list').each(function(index) {
$('.streamItem:even',this).addClass('right');
})
答案 2 :(得分:0)
如果您想使用.each()
添加类,请查看我的回答,$(this)
就是您在代码中遗漏的内容
$('.streamItem:even').each(function() {
$(this).addClass('right');
});
.right{
color: green;
}
<div class="collection-list">
<div class="streamItem">item 1</div>
<div class="streamItem">item 2</div>
<div class="streamItem">item 3</div>
</div>
<div class="collection-list">
<div class="streamItem">item 1</div>
<div class="streamItem">item 2</div>
<div class="streamItem">item 3</div>
<div class="streamItem">item 4</div>
</div>
使用此代码
$( "div.streamItem:nth-child(odd)" ).addClass('right');
使用此代码
$( "div.streamItem:nth-child(even)" ).addClass('right');
$('div.streamItem:even').each(function() {
$(this).addClass('right');
});