javascript - 使用 jQuery 扩展嵌套子导航项

标签 javascript jquery html

我有多个级别的嵌套链接导航,并且希望能够在单击时展开每个级别,但我为此编写的 jQuery 遇到了问题,我不确定下一步该去哪里。

这是我目前拥有的:

    	subMenuAnchor = $('.menu-item-has-children > a');
 		subMenuAnchor.append('<span class="aib plus-icon"></span>');
 		$('.sub-menu').hide();
 		subMenuAnchor.click(function(e) {
 			e.preventDefault();
 			$('.sub-menu').slideToggle(300);
 			$(this).toggleClass('submenu-active');
 		});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<li id="menu-item-208" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-208"><a href="#" class="">Neighbourhoods<span class="aib plus-icon"></span></a>
<ul class="sub-menu" style="display: none;">
    <li id="menu-item-203" class="menu-item menu-item-type-taxonomy menu-item-object-neighbourhoods menu-item-has-children menu-item-203"><a href="http://salford.dev/neighbourhoods/neighbourhood-1/" class="">Neighbourhood 1<span class="aib plus-icon"></span></a>
        <ul class="sub-menu" style="display: none;">
            <li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-210"><a href="http://salford.dev/services/name-health-centre/">Name Health Centre</a>
            </li>
            <li id="menu-item-209" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-209"><a href="http://salford.dev/services/name-surgery/">Name Surgery</a>
            </li>
        </ul>
    </li>
    <li id="menu-item-204" class="menu-item menu-item-type-taxonomy menu-item-object-neighbourhoods menu-item-has-children menu-item-204"><a href="http://salford.dev/neighbourhoods/neighbourhood-2/">Neighbourhood 2<span class="aib plus-icon"></span></a>
        <ul class="sub-menu" style="display: none;">
            <li id="menu-item-258" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-258"><a href="http://salford.dev/services/name-surgery/">Name Surgery</a>
            </li>
            <li id="menu-item-259" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-259"><a href="http://salford.dev/services/name-health-centre/">Name Health Centre</a>
            </li>
        </ul>
    </li>
</ul>
</li>

这会产生这个:

screenshot of output

我希望 'Neighbourhood' 项目与 'NEIGHBOURHOODS' 项目执行相同的操作。我需要对 jQuery 进行哪些更改才能使其正常工作?

最佳答案

我想这就是您正在寻找的:

subMenuAnchor = $('.menu-item-has-children > a');
subMenuAnchor.append('<span class="aib plus-icon"></span>');
$('.sub-menu').hide();
subMenuAnchor.click(function(e) {
  e.preventDefault();
  $(this).closest('li').find('.sub-menu').first().slideToggle(300);
  $(this).closest('a').toggleClass('submenu-active');
});

工作示例:

subMenuAnchor = $('.menu-item-has-children > a');
subMenuAnchor.append('<span class="aib plus-icon"></span>');
$('.sub-menu').hide();
subMenuAnchor.click(function(e) {
  e.preventDefault();
  $(this).closest('li').find('.sub-menu').first().slideToggle(300);
  $(this).closest('a').toggleClass('submenu-active');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<li id="menu-item-208" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-208"><a href="#" class="">Neighbourhoods<span class="aib plus-icon"></span></a>
<ul class="sub-menu" style="display: none;">
    <li id="menu-item-203" class="menu-item menu-item-type-taxonomy menu-item-object-neighbourhoods menu-item-has-children menu-item-203"><a href="http://salford.dev/neighbourhoods/neighbourhood-1/" class="">Neighbourhood 1<span class="aib plus-icon"></span></a>
        <ul class="sub-menu" style="display: none;">
            <li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-210"><a href="http://salford.dev/services/name-health-centre/">Name Health Centre</a>
            </li>
            <li id="menu-item-209" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-209"><a href="http://salford.dev/services/name-surgery/">Name Surgery</a>
            </li>
        </ul>
    </li>
    <li id="menu-item-204" class="menu-item menu-item-type-taxonomy menu-item-object-neighbourhoods menu-item-has-children menu-item-204"><a href="http://salford.dev/neighbourhoods/neighbourhood-2/">Neighbourhood 2<span class="aib plus-icon"></span></a>
        <ul class="sub-menu" style="display: none;">
            <li id="menu-item-258" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-258"><a href="http://salford.dev/services/name-surgery/">Name Surgery</a>
            </li>
            <li id="menu-item-259" class="menu-item menu-item-type-post_type menu-item-object-services menu-item-259"><a href="http://salford.dev/services/name-health-centre/">Name Health Centre</a>
            </li>
        </ul>
    </li>
</ul>
</li>

关于javascript - 使用 jQuery 扩展嵌套子导航项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187097/

相关文章:

javascript - 如何在html中的javascript中使用ajax

javascript - 自动显示数据库中没有的日期的 0 销售额

javascript style.display 不工作

javascript - 如何触发两个 Promise 并有条件地等待一个?

javascript - css3 跨浏览器转换不工作

html - CSS - 相对定位的父 div 不会拉伸(stretch)到绝对子 div 高度

javascript/jQuery : Adding linebreak in title -- works in IE9, 但 IE8 中没有

javascript - 无法读取 window.onscroll 处未定义的 'replace' 属性

javascript - 使用 jQuery 可以根据数字选择一组 sibling 吗?

javascript - 如何在单击按钮时获取同级选择器的值?