使用jQuery在同一个父对象中仅定位另一个类

时间:2019-06-11 16:10:53

标签: jquery html jquery-hover

我试图通过将另一个元素与同一个父元素悬停来仅影响一个类。有许多具有相同类名的父级/元素,我只需要在每个父级/元素内部指定一个即可实现悬停效果。我正在尝试使用.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);
});

1 个答案:

答案 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>