为什么我不能在.red
上添加.out
类,却不能排除最接近的那个?
$('.ring').on('click', function() {
$(this).not().closest('out').addClass('red');
});
div {
height: 100px;
width: 100px;
float: left;
margin: 2px;
}
.ring {
background: grey;
}
.out {
background: khaki;
}
.red {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
答案 0 :(得分:1)
我会使用index
来做到这一点:
$('.ring').on('click', function() {
$(".red").removeClass("red");
var index = $(".ring").index(this);
$(".out").not(":eq("+index+")").addClass('red');
});
div {
height: 100px;
width: 100px;
float: left;
margin: 2px;
}
.ring {
background: grey;
}
.out {
background: khaki;
}
.red {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
<div class="map">
<div class="data">
<div class="ring"></div>
</div>
<div class="out"></div>
</div>
答案 1 :(得分:0)
我将红色类添加到所有内容中,然后将其从相邻元素中删除。您不太正确地使用not函数。
此解决方案使用父级从所选元素中查找树,直到找到地图,然后执行find
来标识父级下面的.out
:
// add red class to all elements with .out
$('.out').addClass('red');
// remove red from out under parent .map
$(this).parents('.map').find('.out').removeClass('red');
答案 2 :(得分:0)
您使用的closest
错误。 out
不是ring
的上升点。您需要遍历父母并获得所有兄弟姐妹
$(this).closest('.map').nextAll(':not(:first)').find('.out').addClass('red')
如果要对下一个元素也进行着色,则删除:not(:first)