仅针对另一个 Class 在同一个 Parent 与 Jquery

Targeting Only One Other Class Within the Same Parent With Jquery

我试图通过悬停另一个具有相同 parent 的元素来仅影响一个 class。有许多 parents/elements 具有相同的 class 名称,我只需要在每个中定位一个来实现悬停效果。我正在尝试使用 .find(),但由于某种原因它不起作用。如果我不使用 .find(),它会开始定位页面上的所有“.team-title”class 元素。

<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);
});

首先你需要使用 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>