【发布时间】:2017-11-16 20:04:20
【问题描述】:
大家好, 感谢您抽出宝贵时间查看这篇文章。
我尝试创建带有子菜单的菜单时遇到以下问题。
菜单应该:
- 点击打开子菜单。 (工作)
-
子菜单在所选菜单上保持打开状态。 (工作)
3.在其他菜单中单击后,前一个子菜单应关闭。 (不工作)
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="bottom-menu">
<li class="drop"><a>Hyperlink 1</a></li>
<li class="drop"><a>Hyperlink 2</a>
<ul id="m1" class="bottom-menu-sub">
<li><a href="#">Hyperlink Sub</a></li>
<li><a href="#">Hyperlink Sub</a></li>
<li><a href="#">Hyperlink Sub</a></li>
</ul>
</li>
<li class="drop"><a>Hyperlink 3</a>
<ul id="m2">
<li><a href="#">Hyperlink Sub</a></li>
<li><a href="#">Hyperlink Sub</a></li>
</ul>
</li>
<li class="drop"><a>Hyperlink 4</a>
<ul id="m3">
<li><a href="#">Hyperlink Sub</a></li>
<li><a href="#">Hyperlink Sub</a></li>
</ul>
</li>
</ul>
CSS:
.bottom-menu li ul {
display:none;
}
JS:
jQuery(function ($) {
// jQuery code in here can safely use $
$('.bottom-menu li')
.css({
cursor: "pointer"
});
$(".drop>a").on('click', function (eventData) {
var $listItem = $(this).closest('li');
$listItem.find('ul').toggle();
$listItem.toggleClass('open');
$.cookie('open_items', 'the_value');
openItems = new Array();
$("li.drop").each(function (index, item) {
if ($(item).hasClass('open')) {
openItems.push(index);
}
});
$.cookie('open_items', openItems.join(','));
});
if ($.cookie('open_items') && $.cookie('open_items').length > 0) {
previouslyOpenItems = $.cookie('open_items');
openItemIndexes = previouslyOpenItems.split(',');
$(openItemIndexes).each(function (index, item) {
$("li.drop").eq(item).addClass('open').find('ul').toggle();
});
}
});
【问题讨论】:
-
他们通常会在您的
click事件触发后立即关闭所有内容。 -
只是想知道,您为什么将 cookie 用于简单的下拉菜单?
标签: javascript jquery html css drop-down-menu