我有一组动态创建的div
s。这些div
具有两个类.a
或.b
中的一个,用于定义它们的着色方式。这些div
遵循某些规则:
.a
为红色.b
为蓝色我目前正在尝试使用以下选择器
//trying to color all final as
$('.a').nextUntil('.b').addBack().removeClass('colored');
$('.a').nextUntil('.b').addBack().last().addClass('colored');
//trying to color all final bs using not
$('.b').nextUntil(':not(.b)').addBack().removeClass('colored');
$('.b').nextUntil(':not(.b)').addBack().last().addClass('colored');
.a{
float:left;
text-align:center;
display:block;
width:30px;
height:30px;
background-color:#eee;
}
.b{
float:left;
text-align:center;
display:block;
width:30px;
height:30px;
background-color:#eee;
}
.a.colored{
background-color:red;
}
.b.colored{
background-color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="a">a1</div>
<div class="a">a2</div>
<div class="a">a3</div>
<div class="b">b1</div>
<div class="b">b2</div>
<div class="b">b3</div>
<div class="a">a4</div>
<div class="a">a5</div>
<div class="b">b4</div>
<div class="a">a6</div>
<div class="b">b5</div>
我希望将此标记为a3
,a5
和a6
为红色,并为b3
,b4
和b5
着色蓝色。但是,它似乎只影响每个班级的最后一个div(a6
和b5
)。
是否可以使用nextUntil()
为同一类的每个顺序集的最后一个div着色?如果没有,我可以用它来做什么?
答案 0 :(得分:1)
这有效
$('.a').each(function(){
var $sibling = $(this).next();
if($sibling.hasClass('b') || $(this).is(':last-child')){
$(this).addClass('colored');
}
});
$('.b').each(function(){
var $sibling = $(this).next();
if($sibling.hasClass('a') || $(this).is(':last-child')){
$(this).addClass('colored');
}
});
答案 1 :(得分:1)
简单的解决方案
$('.b').prev('.a').addClass('colored').end().last().addClass('colored')
$('.a').prev('.b').addClass('colored').end().last().addClass('colored');
在工作小提琴下面
答案 2 :(得分:1)
this is for dynamic solution . we can write N number of classes for this