我确信有人问过,但我无法找到解决问题的方法。我有一个在3个div中命名相同的类。这个类是用css隐藏的。问题是当我将鼠标悬停在1个div上时,所有3个同时显示隐藏。我只想要我想要展示的元素。我想我应该使用.each(),但我不确定它们是如何组合在一起的。
CSS
.background-hover {
display: none;
HTML:
<div class="home-get-started">
<-- first--><div class="home-get-started">
<!-- image-->
<img src="image.png">
<!-- hover hidden state -->
<div class="background-hover">
<div class="home-btn">Text</div>
</div>
</div>
<--second --> <div class="home-get-started">
<!-- image-->
<img src="image.png">
<!-- hover hidden state -->
<div class="background-hover">
<div class="home-btn">Text</div>
</div>
</div>
</div>
jQuery的:
$(".home-get-started").hover(
function () { $('.background-hover').css({"display":"block"}); },
function () { $('.background-hover').css({"display":"none"}); }
);
答案 0 :(得分:4)
您正在使用类background-hover
显示/隐藏所有元素。您可能想要的是仅对触发事件的元素的后代执行此操作...
您可以使用find()
在DOM中查询某个元素的后代(在我们的示例中为this
)。
$(".home-get-started").hover(
function () { $(this).find('.background-hover').show(); },
function () { $(this).find('.background-hover').hide(); }
);
请注意,在某些情况下,两个文本将同时显示 - 这是因为您的包装器div也具有home-get-started类,因此悬停处理程序也将触发该元素。
答案 1 :(得分:1)