javascript - 如何使用 jquery 影响特定元素

标签 javascript jquery html

(感谢任何好心人的帮助)

我在一个元素的单个实例上使用 jQuery悬停方法时遇到问题,该元素的类名由多个元素共享

下面我提供了我的代码:

HTML:

<div class="container">
  <div class="c_box">
    <div class="img">
        <svg hieght="0" width="0">
          <defs>
            <clipPath id="svgPath">
              <circle stroke="#000000" cx="125" cy="235" r="125"></circle>
              <rect x="0" y="0" width="250" height="230"></rect>
            </clipPath>
          </defs>
        </svg>
        <div class="rectangle">
          <div class="semi_circle"></div>
        </div>
        <span class="text">Painting</span>
    </div>

  </div>
  <div class="triangle"></div>
</div>

<div class="container">
  <div class="c_box">
    <div class="img">
        <svg hieght="0" width="0">
          <defs>
            <clipPath id="svgPath">
              <circle stroke="#000000" cx="125" cy="235" r="125"></circle>
              <rect x="0" y="0" width="250" height="230"></rect>
            </clipPath>
          </defs>
        </svg>
        <div class="rectangle">
          <div class="semi_circle"></div>
        </div>
        <span class="text">Painting</span>
    </div>

  </div>
  <div class="triangle"></div>
</div>

jQuery:

$(document).ready(function (){

  $(".container").hover(function(){
    $(".c_box").animate({top: "-37px" }, 250);
    $(".rectangle").delay(250).animate({right: "50px" }, 250);
    $(".text").delay(450).animate({left: "69px" }, 150);
    $(".triangle").delay(450).animate({top: "-20px" }, 150);
  },
    function(){
    $(".text").animate({left: "-105px" }, 150);
    $(".rectangle").delay(150).animate({right: "280px" }, 150);
    $(".c_box").delay(250).animate({top: "-360px" }, 250);
    $(".triangle").delay(450).animate({top: "0px" }, 150);
    }
  );
});$(document).ready(function (){

  $(".container").hover(function(){
    $(".c_box").animate({top: "-37px" }, 250);
    $(".rectangle").delay(250).animate({right: "50px" }, 250);
    $(".text").delay(450).animate({left: "69px" }, 150);
    $(".triangle").delay(450).animate({top: "-20px" }, 150);
  },
    function(){
    $(".text").animate({left: "-105px" }, 150);
    $(".rectangle").delay(150).animate({right: "280px" }, 150);
    $(".c_box").delay(250).animate({top: "-360px" }, 250);
    $(".triangle").delay(450).animate({top: "0px" }, 150);
    }
  );
});

代码工作正常,但是,具有“container”类的两个 div 都会受到影响。理想情况下,我希望一次只影响一个 div(与鼠标交互的那个)

我熟悉“$(this)”选择器。不过,我知道它是否适用于这种情况。

最佳答案

您应该定位 .c_box , .rectangle , .text , .triangle当前.container 。可以使用 $(this) 来定位当前容器.

$(function () {
  $('.container').hover(function () {
    var $currentContainer = $(this);
    var $cBox = $currentContainer.find('.c_box');
    var $rectangle = $currentContainer.find('.rectangle');
    var $text = $currentContainer.find('.text');
    var $triangle = $currentContainer.find('.triangle');

    $cBox.animate({ top: '-37px' }, 250);
    $rectangle.delay(250).animate({ right: '50px' }, 250);
    $text.delay(450).animate({ left: '69px' }, 150);
    $triangle.delay(450).animate({ top: '-20px' }, 150);
  }, function () {
    var $currentContainer = $(this);
    var $cBox = $currentContainer.find('.c_box');
    var $rectangle = $currentContainer.find('.rectangle');
    var $text = $currentContainer.find('.text');
    var $triangle = $currentContainer.find('.triangle');

    $text.animate({ left: '-150px' }, 150);
    $rectangle.delay(150).animate({ right: '280px' }, 150);
    $cBox.delay(250).animate({ top: '-360px' }, 250);
    $triangle.delay(450).animate({ top: '0' }, 150);
  });
});

关于javascript - 如何使用 jquery 影响特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334711/

相关文章:

javascript - typescript :合并/覆盖嵌套接口(interface)

javascript - 获取使用 AJAX 动态生成的 div 的属性

javascript - 根据浏览器中显示的文本选择按钮元素

javascript - 这是什么 : document. reservation.submit();应该做的?

javascript - 如何在不触及全局变量的情况下访问 reopenClass 中的容器?

javascript - 加载页面显示三秒

JavaScript 不响应复选框

javascript - Jquery无法选中复选框

javascript - 在 div 中隐藏旧内容

html - 如何使用属性将 css 定义为表 td?