我想要实现的第一步是测试一个“li”是否嵌套了一个“ul”,如果是,在点击时显示嵌套的“ul”。这很好;然而,if语句对于每个“li”都返回true,而不仅仅是那些有孩子“ul”的那个。这意味着没有子菜单的链接不起作用,因为e.preventDefault()被调用。jQuery定位嵌套列表
感谢您的帮助!
$('.main_nav').on('click', 'a', function(e) {
\t \t if($(this).parent().has('ul')) {
\t \t \t e.preventDefault();
\t \t \t $(this).parent().children('ul').toggle(800, 'easeOutQuint', function() {
\t \t \t \t $(this).closest('li').toggleClass('open dropdown');
\t \t }).closest('li').siblings('.open').toggleClass('open dropdown').children('ul').hide('fast');
\t \t }
\t });
<nav class="main_nav" role="navigation" aria-label="Primary Menu">
<ul id="menu-main" class="menu"><li id="menu-item-7" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-7"><a href="http://projectbiketech.dev/">Home</a></li>
<li id="menu-item-22" class="dropdown menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-22"><a href="http://projectbiketech.dev/about/">About</a>
<ul class="sub-menu">
\t <li id="menu-item-61" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-61"><a href="http://projectbiketech.dev/about/team/">Team</a></li>
\t <li id="menu-item-60" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-60"><a href="http://projectbiketech.dev/about/board-of-directors/">Board of Directors</a></li>
\t <li id="menu-item-59" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-59"><a href="http://projectbiketech.dev/about/advisory-board/">Advisory Board</a></li>
\t <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-58"><a href="http://projectbiketech.dev/about/friends-of-pbt/">Friends of PBT</a></li>
</ul>
</li>
<li id="menu-item-25" class="dropdown menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-25"><a href="http://projectbiketech.dev/programs/">Programs</a>
<ul class="sub-menu">
\t <li id="menu-item-65" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-65"><a href="http://projectbiketech.dev/programs/bike-tech-in-school/">Bike Tech In School</a></li>
</ul>
</li>
<li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28"><a href="http://projectbiketech.dev/chapters/">Chapters</a></li>
<li id="menu-item-31" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31"><a href="http://projectbiketech.dev/media/">Media</a></li>
<li id="menu-item-34" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-34"><a href="http://projectbiketech.dev/support/">Support</a></li>
<li id="menu-item-37" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-37"><a href="http://projectbiketech.dev/contact/">Contact</a></li>
</ul> </nav><!-- .main_navigation -->
您正在错误地使用[jQuery has selector](https://api.jquery.com/has/)。猜你想检查父母是否包含任何嵌套的UL?你必须解释你想要达到的行为:一旦你点击并切换子菜单,如果你点击其他链接或相同的链接会发生什么?你也在混合脚本和样式,添加样式,但隐藏元素......认为你开始总是错误的方式。 – skobaljic
可能重复[jQuery如果有()选择器做东西](http://stackoverflow.com/questions/16277484/jquery-if-has-selector-do-stuff) –