我有一个像
这样的菜单<li class="main-menu">
<a accesskey="a">menu item 1</a>
<ul>
<li>
<a accesskey="d">submenuItem1</a>
</li>
<li class="submenu">
<a accesskey="e">submenuItem2</a>
<ul>
<li class="innermenu"><a >innerMenuItem1</a></li>
<li><a>innerMenuItem1</a></li>
<li><a>innerMenuItem2</a></li>
<li><a>innerMenuItem3</a></li>
<li><a>innerMenuItem4</a></li>
</ul>
</li>
</ul>
</li>
选择主菜单项和选择子菜单时如何悬停/显示子菜单显示内部菜单项。我是一个非常新的jquery有一些问题,这个特别是子菜单到内部菜单。谢谢..
答案 0 :(得分:0)
accesskey
实际上只能与 alt 键一起使用,我们可以拦截一般的keydown事件并以这种方式处理热键。如果我们拦截了keydown并且它是其中一个键,我们想要切换相关.active
上的li
类。然后使用CSS根据悬停/类状态隐藏和显示子菜单。
我的示例使用data-key
属性来设置属性,在页面加载时,我们将键和关联的元素提取到数组中。在处理keydown
时扫描并处理此阵列。
<强> HTML 强>
<ul class="main-menu">
<li data-key="65">
<a>menu item 1 (a)</a>
<ul>
<li data-key="68">
<a>submenuItem1 (d)</a>
</li>
<li data-key="69">
<a>submenuItem2 (e)</a>
<ul>
<li><a>innerMenuItem1</a></li>
<li><a>innerMenuItem1</a></li>
<li><a>innerMenuItem2</a></li>
<li><a>innerMenuItem3</a></li>
<li><a>innerMenuItem4</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<强> CSS 强>
li ul {
display:none;
}
li:hover > ul,
li.active > ul {
display:block;
}
<强> JS 强>
var keys = [];
$(document).ready(function () {
$('[data-key]').each(function () {
keys.push({
key: $(this).attr('data-key'),
elem: $(this)
});
});
});
$(window).keydown(function(e) {
for (var i = 0; i < keys.length; i++) {
if (e.keyCode == keys[i].key) {
keys[i].elem.toggleClass('active');
return;
}
}
});