(感谢任何好心人的帮助)
我在一个元素的单个实例上使用 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/