【发布时间】:2018-01-26 02:17:07
【问题描述】:
我打算将两组 div 用作菜单。我做了一些 Jquery 代码来显示它们,它适用于一个,但如果我想创建更多,那么我会切换所有 div。我想也许添加类似data-index ="0" 的东西来关联它们会是一个好方法,但似乎无法让它发挥作用
menuState = {
menuOpen: false,
timer: false
}
$('.main, .sub').on('mouseover', () => {
clearInterval(menuState.timer)
if (menuState.menuOpen) { return }
$('.sub').show();
menuState.menuOpen = true
})
$('.main, .sub').on('mouseout', () => {
menuState.timer = setTimeout( () => {
menuState.menuOpen = false
$('.sub').hide()
}, 300)
})
body {
padding: 2rem;
font-family: Open Sans;
font-weight: 100;
}
.thing {
border-radius: 5px;
padding: 1rem 2rem;
font-size: 2rem;
margin: 1rem;
color: white;
cursor: pointer;
}
.pink {
background: pink;
}
.blue {
background: lightblue;
}
.sub {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="thing pink main" data-index ="0">Hover</div>
<div class="thing pink sub" data-index ="0">Show</div>
<div class="thing blue main" data-index ="1">Hover</div>
<div class="thing blue sub" data-index ="1">Show</div>
请确定,预期的行为是,如果我将鼠标悬停在蓝色 div 上,则会显示另一个蓝色 div。如果我将鼠标悬停在粉色 div 上,则会显示一个粉色 div。
提前致谢!
编辑
我真的需要保留下拉菜单,因为这是一个简化的菜单,并且在切换的 div 上会有用户信息。
【问题讨论】:
-
为什么是 js 而不是 css?
-
我简化了示例,但在实际应用程序中是一个带有不同链接的导航和一个包含所有内容的 div,用于在导航之外的下拉菜单。我认为 JS 更适合这种方法。
-
看看@Rory McCrossan 的回答
标签: javascript jquery