【发布时间】:2020-09-21 23:56:19
【问题描述】:
我有一系列父 divs,其中第一个在加载时具有默认活动状态。
活动类在悬停时会被移除并添加到其他父 div。
但是,当parent div 具有其活动类时,我还希望我的函数将单独的活动类状态添加到另一个 div(技术上是 child div)。
首先child div 在加载时也有一个活动状态。
我使用的是 jQuery 而不是 CSS,因为当我将鼠标悬停在其相应的父级上时也会显示 third div,因此是 hov1、hov2 等。
另外,我想要加载时的默认活动状态。
这是我的 jQuery:
$('.parent').hover(function() {
$('.active-parent').removeClass('active-parent');
$(this).addClass('active-parent');
if ($(this).hasClass('active-parent')) {
$('.arrow-right').addClass('arrow-right-hov')
}
else {
$('.arrow-right').removeClass('arrow-right-hov')
}
}),
这是 HTML:
<h1 class="parent active-parent hov1">
Cybersecurity
<div class="arrow-right arrow-right-hov"></div>
</h1>
<h1 class="parent hov2">
High-Performance Computing
<div class="arrow-right"></div>
</h1>
<h1 class="parent hov3">
High-Frequency Trading
<div class="arrow-right"></div>
</h1>
非常感谢任何帮助 - 谢谢!
编辑:
这是最终工作的 javascript。不再有 if 声明。
当悬停在具有相同 parent 类的另一个 div 上时,初始 arrow-right-hov 和 active-parent 默认状态将被删除。
arrow-right-hov 在存在 active-parent 类时添加。
鼠标移出时保持活动状态。
$('.parent').hover(function() {
$('.active-parent').removeClass('active-parent');
//remove default parent active state when hovering another parent
$(this).addClass('active-parent');
//add active parent state on hovered div, remain active
$('.arrow-right-hov').removeClass('arrow-right-hov')
//remove default secondary active child class on parent hover
$(this).children(".arrow-right").addClass('arrow-right-hov');
//add active child class on active parent
}),
感谢ikiK 让我找到正确的方向!
【问题讨论】:
-
为什么不用 JS 而不是用 CSS 和
:hover伪?
标签: javascript html jquery