Chi*_*001 5 html javascript css jquery menu
我正在尝试使用jQuery创建一个子菜单.这个想法是当有人点击第一个菜单时会出现一个子菜单,然后当有人点击子菜单时它会消失并显示一个包含信息的div,但我无法使其正常工作.
这是我的HTML:
<ul id="menu">
<li>
<a href="#">Item 1</a>
<ul id="submenu">
<li><a href="#" data-menu="show1">Sub menu 1</a></li>
<li><a href="#" data-menu="show2">Sub menu 2</a></li>
</ul>
</li>
</ul>
<div id="show1" class="content">Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber hendrerit an. </div>
<div id="show2" class="content">Ius id vidit volumus mandamus, vide veritus democritum te nec, ei eos debet libris consulatu. No mei ferri </div>
Run Code Online (Sandbox Code Playgroud)
这是我的jQuery:
$(document).ready(function () {
$('#menu li ').click(function () {
$('#submenu').fadeToggle();
$('.content').fadeOut();
});
$('ul#submenu li a').click(function () {
var menu = $(this).data("menu");
$('#' + menu).fadeIn();
});
});
Run Code Online (Sandbox Code Playgroud)
这个想法很简单,如果单击菜单,所有内容div必须隐藏,子菜单必须切换(显示隐藏,隐藏,如果显示.)单击子菜单项时,子菜单必须隐藏,并且单击与数据属性匹配的内容div必须出现.
但是,当我单击子菜单项时,它会暂时显示内容,然后它就会消失.对我做错了什么的想法?
当您单击子菜单项时,这两个事件处理程序都会被触发。问题出在你的选择器上:
$('#menu li ')还捕获子菜单项,这些子菜单<li>项也是菜单的后代标签。您可以将选择器更改为$("#menu > li"),它仅捕获直接后代(子代),但我认为一般来说最好添加类并使用更简单的选择器。
超文本标记语言
<ul id="menu">
<li class="menu-top-item>
<a class="menu-top-item-link" href="#">Item 1</a>
<ul id="submenu">
<li class="menu-sub-item">
<a class="menu-sub-item-link" href="#" data-menu="show1">Sub menu 1</a>
</li>
<li class="menu-sub-item">
<a class="menu-sub-item-link" href="#" data-menu="show2">Sub menu 2</a>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
JavaScript小提琴
$('.menu-top-item-link').click(function () {
$('#submenu').fadeToggle();
$('.content').fadeOut();
return false;
});
$('.menu-sub-item-link').click(function () {
var menu = $(this).data("menu");
$('#' + menu).fadeIn();
return false;
});
Run Code Online (Sandbox Code Playgroud)