我正在尝试用类informationHov
单击div
并更改div的颜色,并希望其他具有相同类的divs
删除颜色。
如何选择没有点击的类相同的div。我的意思是,假设我点击了同一类的第二个div,那么如何选择其他具有相同类的div并对它们做些什么,而不是对第二个div?有$(this).not('.informationHov').css('')
吗类似的。。。。谢谢
直接回答问题时,有一个not(this)
选项:
$('.test').click(function() {
$(this).css({
'color': 'red'
});
$('.test').not(this).css({
'color': 'blue'
});
});
.test {
color: black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">Test</div>
<div class="test">Test</div>
<div class="test">Test</div>
<div class="test">Test</div>
<div class="test">Test</div>
您可以通过以下方式快速完成此操作:
-
使用类别
informationHov
移除/重置所有div上的颜色$('.informationHov').css({color:notClicked});
-
设置单击的div的颜色:
$(this).css({color:clicked});
考虑到这一点,您可能最好应用(addClass
)/remove(removeClass
)一个CSS类,以实现关注点的牢固分离,而不是直接更改Javascript中的样式。
正如您在评论中所指出的,如果您想对其他项目做其他事情,只需将它们全部选中,并使用.not
从该集合中排除当前单击的项目
$('.informationHov').not($(this))
$('.informationHov').on('click', function() {
$(this).addClass('active');
$('.informationHov').not(this).each(function() {
$(this).removeClass('active');
/// do something to all other elements
});
});
.informationHov {
width: 50px;
height: 50px;
border: 1px solid black;
margin: 10px;
display: inline-block;
}
.active {
background-color: green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="informationHov">One</div>
<div class="informationHov">Two</div>
<div class="informationHov">Three</div>
像这样:
$('.informationHov').on('click',function(){
$(this).addClass('clicked').siblings().removeClass('clicked')
});
.informationHov{
width:50px;
height:50px;
border: 1px solid black
}
.clicked{
background-color:blue
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="informationHov">One</div>
<div class="informationHov">Two</div>
<div class="informationHov">Three</div>
siblings()方法返回所选元素的所有同级元素检查此项:http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_siblings
我为你的问题制造了一把小提琴:http://jsfiddle.net/r4utzkqy/r4utzkqy