我试图通过将另一个元素与同一个父元素悬停来仅影响一个类。有许多具有相同类名的父级/元素,我只需要在每个父级/元素内部指定一个即可实现悬停效果。我正在尝试使用.find(),但是由于某些原因它不起作用。如果我不使用.find(),它将开始定位页面上所有“ .team-title”类元素。
<div class="team-parent">
<div class="team-memeber"></div>
<div class="team-title"></div>
</div>
<div class="team-parent">
<div class="team-member"></div>
<div class="team-title"></div>
</div>
<div class="team-parent">
<!-- ... -->
</div>
$(".team-member").hover(function() {
$("this").find(".team-title").animate({"marginLeft": "15px"}, 400);
}, function() {
$("this").find(".team-title").animate({"marginLeft": "0px"}, 400);
});
答案 0 :(得分:1)
首先,您需要使用this
作为关键字,而不是字符串。其次,find()
用于定位子元素,而您要定位的元素是同级元素,因此可以使用next()
,如下所示:
$(".team-member").hover(function() {
$(this).next(".team-title").animate({
"marginLeft": "15px"
}, 400);
}, function() {
$(this).next(".team-title").animate({
"marginLeft": "0px"
}, 400);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="team-parent">
<div class="team-member">Member 1</div>
<div class="team-title">Team 1</div>
</div>
<div class="team-parent">
<div class="team-member">Member 2</div>
<div class="team-title">Team 2</div>
</div>
话虽如此,这里不需要JS,因为您要实现的目标可以在CSS中更有效地完成:
.team-title {
margin-left: 0;
transition: margin 0.4s;
}
.team-member:hover + .team-title {
margin-left: 15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="team-parent">
<div class="team-member">Member 1</div>
<div class="team-title">Team 1</div>
</div>
<div class="team-parent">
<div class="team-member">Member 2</div>
<div class="team-title">Team 2</div>
</div>