我正在尝试使用我在其他网站上使用的脚本,让我的导航菜单下拉列表正常动画。
以下是脚本:
jQuery(window).load(function() {
$("#menu > div > ul > li > a").click(function (e) { // binding onclick
if ($(this).parent().hasClass('selected')) {
$("#menu .selected ul").slideUp(100); // hiding popups
$("#menu .selected").removeClass("selected");
} else {
$("#menu .selected ul").slideUp(100); // hiding popups
$("#menu .selected").removeClass("selected");
if ($(this).next(".sub-menu").length) {
$(this).parent().addClass("selected"); // display popup
$(this).next(".sub-menu").children().slideDown(200);
}
}
e.stopPropagation();
});
$("html").click(function () { // binding onclick to body
$("#menu .selected ul").slideUp(100); // hiding popups
$("#menu .selected").removeClass("selected");
});
});
与我合作的html与我正在使用的其他网站不同,因为我尝试使用Wordpress'默认wp_nav_menu()
输出以使其正常工作。它是一个不同的结构,我无法弄清楚要使其正常工作所做的调整。
输出wp_nav_menu:
<nav id="menu" role="navigation">
<div class="menu-main-navigation-container"><ul id="menu-main-navigation" class="menu"><li id="menu-item-163" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-163"><a href="#">Programming</a>
<ul class="sub-menu" style="">
<li id="menu-item-156" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-156" style=""><a href="http://lgtheater.org/wordpress-2014/programming/bakery/">Bakery</a></li>
<li id="menu-item-157" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-157" style=""><a href="http://lgtheater.org/wordpress-2014/programming/lg-cabaret/">LG! Cabaret</a></li>
<li id="menu-item-158" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-158" style=""><a href="http://lgtheater.org/wordpress-2014/programming/mainstage/">Mainstage</a></li>
<li id="menu-item-155" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-155" style=""><a href="http://lgtheater.org/wordpress-2014/programming/outreach/">Outreach</a></li>
</ul>
</li>
<li id="menu-item-164" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-164"><a href="#">Get Involved</a>
<ul class="sub-menu">
<li id="menu-item-161" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-161"><a href="http://lgtheater.org/wordpress-2014/get-involved/audition/">Audition</a></li>
<li id="menu-item-160" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-160"><a href="http://lgtheater.org/wordpress-2014/get-involved/script-submissions/">Script Submissions</a></li>
<li id="menu-item-162" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-162"><a href="http://lgtheater.org/wordpress-2014/get-involved/volunteer/">Volunteer</a></li>
</ul>
</li>
<li id="menu-item-167" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-167"><a href="http://lgtheater.org/wordpress-2014/blog/">Blog</a></li>
<li id="menu-item-165" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-165"><a href="#">About</a>
<ul class="sub-menu">
<li id="menu-item-153" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153"><a href="http://lgtheater.org/wordpress-2014/about/contact/">Contact</a></li>
<li id="menu-item-151" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-151"><a href="http://lgtheater.org/wordpress-2014/about/history/">History</a></li>
<li id="menu-item-152" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-152"><a href="http://lgtheater.org/wordpress-2014/about/staff/">Staff</a></li>
</ul>
</li>
<li id="menu-item-149" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-149"><a href="http://lgtheater.org/wordpress-2014/donate/">Donate</a></li>
</ul></div
>
</div>
编辑:添加当前菜单样式:
#menu {
float: right;
position: relative;
top: 25px;
}
#menu > div > ul > li {
display: inline-block;
text-align: center;
padding: 0 1em;
}
#menu > div > ul > li.menu-item-has-children a:after {
content: " \f107";
font-family: FontAwesome;
}
#menu li a {
color: #fff;
text-decoration: none;
font-weight: bold;
}
#menu li a:hover {
color: #F73987;;
}
#menu > div > ul > li > ul {
display: none;
}
#menu > div > ul > li > ul.selected {
display: inline;
}
答案 0 :(得分:2)
在您的脚本$(this).parent()
中,实际上在链接之前引用了li
元素。
以下列标记为例
<nav id="menu" role="navigation">
<div class="menu-main-navigation-container">
<ul id="menu-main-navigation" class="menu">
<li id="menu-item-163" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-163">
<a href="#">Programming</a>
用
$("#menu > div > ul > li > a")
您基本上选择<a href="#">Programming</a>
,因此
$(this).parent().addClass("selected");
将班级selected
添加到li
元素,而不是恰好是ul
元素
<ul class="sub-menu" style="">
在您的加价中<a href="#">Programming</a>
下方。您应该将课程selected
添加到不是父母的孩子。
尝试按以下步骤更改脚本
$("#menu > div > ul > li > a").click(function (e) { // binding onclick
if ($(this).next(".sub-menu").hasClass('selected')) {
$("#menu .selected ul").slideUp(100); // hiding popups
$("#menu .selected").removeClass("selected");
} else {
$("#menu .selected ul").slideUp(100); // hiding popups
$("#menu .selected").removeClass("selected");
if ($(this).next(".sub-menu").length) {
$(this).next(".sub-menu").addClass("selected"); // display popup
$(this).next(".sub-menu").children().slideDown(200);
}
}
e.stopPropagation();
});
修改强>
不确定原始菜单的工作原理,但这可能是基于css定义的解决方案。